Zum Inhalt springen

#6 Dominieren Sie das Rhythm-Projekt mit PicoBricks

24 Nov 2023
#6 Dominate The Rhythm Project With PicoBricks

Viele Ereignisse in unserem Leben wurden digitalisiert. Einer davon sind Geräusche. Der Ton und die Intensität des Klangs können elektrisch verarbeitet werden. So können wir Notizen elektronisch extrahieren. Die kleinste Einheit von Klängen, aus denen Musik besteht, wird Note genannt. Jede Note hat eine Frequenz und Intensität. Mit den Codes, die wir schreiben werden, können wir durch Anwenden von Frequenz und Intensität anpassen, welche Note gespielt werden soll und wie lange sie dauern soll.

In diesem Projekt bereiten wir ein Musiksystem vor, das die Melodie eines Liedes mit dem abspielt Summer Modul und stellen Sie den Rhythmus mit dem Potentiometer-Modul mit Picobricks ein. In diesem Projekt lernen Sie auch die Verwendung von Variablen kennen, die in der Programmierterminologie einen wichtigen Platz einnehmen.

Details und Algorithmus

Mit Picobricks können Sie jedes Lied spielen, dessen Noten wir kennen. Wir werden das verwenden Taste-LED-Modul zum Starten des Liedes, das Potentiometer Modul zum Anpassen der Geschwindigkeit des Songs und das Summermodul zum Abspielen der Noten.

Potentiometer ist ein analoges Eingangsmodul. Es handelt sich um einen variablen Widerstand. Wenn die durchfließende Strommenge gedreht wird, nimmt sie zu und ab, wie beim Öffnen und Schließen eines Wasserhahns. Wir werden die Geschwindigkeit des Songs anpassen, indem wir diese Strommenge mit Codes steuern. Summer ändern die Lautstärke entsprechend der Stärke des über sie fließenden Stroms und die Töne entsprechend der Spannungsfrequenz. Mit Microblocks können wir ganz einfach die gewünschten Noten vom Summermodul codieren, indem wir deren Töne und Dauer anpassen.

Wir werden den Status des Tastendrucks im Projekt überprüfen. Wir lassen die Melodie abspielen, wenn die Taste gedrückt wird. Während des Abspielens der Melodie verwenden wir eine Variable namens Rhythmus um die Spieldauer der Noten im gleichen Tempo zu verlängern oder zu verkürzen. Nach dem Start von Picobricks ermöglichen wir dem Benutzer die Anpassung Rhythmus variabel mit dem Potentiometer, entweder während oder vor dem Abspielen der Melodie. Solange Picobricks eingeschaltet ist, teilen wir den Potentiometerwert (0-1023) durch 128 und weisen ihn dem zu Rhythmus Variable. Variablen sind Datenstrukturen, die wir verwenden, wenn wir in unseren Codes Werte verwenden möchten, die vom Benutzer oder von Sensoren geändert werden können. Wenn der Benutzer die Taste drückt, um das Lied zu starten, bereiten wir die Notencodes vor, die es ermöglichen, die Noten für die entsprechend berechnete Dauer abzuspielen Rhythmus Variable.

Komponenten

1X PicoBricks

Schaltplan

Sie können die Module von Picobricks ohne Verkabelung programmieren und betreiben. Wenn Sie die Module getrennt von der Platine verwenden möchten, sollten Sie die Modulverbindungen mit Grove-Kabeln herstellen.

MicroBlocks-Codes der PicoBricks

Sie können auf die Microblocks-Codes des Projekts zugreifen, indem Sie das Bild auf die Registerkarte „Microblocks Run“ ziehen oder auf die Schaltfläche klicken: 

 

Registerkarte „Mikroblocks ausführen“.

MicroPython-Codes der PicoBricks

 


Vom Maschinenimport Pin,PWM,ADC #zum Zugriff auf die Hardware-Picobricks
Aus der utime-Bibliothek „sleep #time“ importieren

button=Pin(10,Pin.IN,Pin.PULL_DOWN)
Pot=ADC(Pin(26))
Summer=PWM(Pin(20))
#bestimmen Sie unsere Eingangs- und Ausgangspins
globaler Rhythmus
gedrückt = Falsch

Töne ={"A3":220,"D4":294,"E4":330,"F4":349}
#definiere die Töne

mysong =["A3", "E4", "E4", "E4", "E4", "E4", "E4", "F4", "E4", "D4", "F4", "E4" ]#Lassen Sie uns die für unser Lied erforderlichen Töne in der richtigen Reihenfolge in einer Sequenz definieren
noteTime =[1,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1]#Definieren Sie Wartezeiten zwischen Tönen in einem Array

def Spielton (Frequenz):
    Buzzer.duty_u16(6000)
    Buzzer.freq(Frequenz)
#definieren Sie die Frequenzen des Summers
def Playsong(Pin):
    global gedrückt

    wenn nicht gedrückt:
        gedrückt = True
        for i inrange(len(mysong)):playtone(tones[mysong[i]])sleep(noteTime[i]/rithm+1)
        Buzzer.duty_u16(0)
#spiele die Töne mit den richtigen Abklingzeiten
#Und schließlich müssen wir den Pins mitteilen, wann sie auslösen sollen, und welche Funktion sie aufrufen sollen, wenn sie ein Ereignis erkennen:
button.irq(trigger=Pin.IRQ_RISING, handler=playsong)while True:
    rithm= pot.read_u16()
    rithm=int(rithm/6400)+1

Arduino C-Codes der PicoBricks

 


#enthalten
#include „ACROBOTIC_SSD1306.h“

int Summer =20;
int pot =26;
int button=10;//Definieren Sie den Summer, den Poti und die Taste

int Re =294;
int Mi =330;
int Fa =349;
int La =440;//DEFINIEREN SIE DIE TÖNEvoidsetup(){
  Wire.begin();
  oled.init();
  oled.clearDisplay();pinMode(buzzer,OUTPUT);pinMode(26,INPUT);pinMode(button,INPUT);//bestimmen Sie unsere Ein- und Ausgangspins}voidloop(){
  int rithm =(analogRead(pot))/146;
  String char_rithm =String(rithm);
  oled.setTextXY(3,4);
  oled.putString("Geschwindigkeit: ");
  oled.setTextXY(3,10);
  oled.putString(char_rithm);//print „Speed:“ und Geschwindigkeitswert auf dem OLED bei x=3 y=4delay(10);if(digitalRead(button)==1){

    oled.clearDisplay();
    oled.setTextXY(3,2);
    oled.putString("Now playing...");//print "Speed: " und Geschwindigkeitswert auf dem OLED bei x=3 y=4tone(buzzer, La);delay(1000/(rithm+1)); Ton(Summer, Mi);Verzögerung(500/(Rhythmus+1));Ton(Summer, Mi);Verzögerung(500/(Rithm+1));Ton(Summer, Mi);Verzögerung(500/(Rithm+ 1));Ton(Summer, Mi);Verzögerung(500/(Rhythmus+1));Ton(Summer, Mi);Verzögerung(500/(Rithm+1));Ton(Summer, Mi);Verzögerung(500 /(Rithmus+1));Ton(Summer, Fa);Verzögerung(500/(Rithm+1));Ton(Summer, Mi);Verzögerung(500/(Rithm+1));Ton(Summer, Re) ;delay(500/(rithm+1));tone(summer, Fa);delay(500/(rithm+1));tone(summer, Mi);delay(1000/(rithm+1));// Spielen Sie die Noten in der richtigen Reihenfolge und zum richtigen Zeitpunkt, wenn die Taste gedrückt wird

    oled.clearDisplay();//den Bildschirm löschen}noTone(buzzer);//den Summer stoppen}

GitHub-Projektseite

Projektvorschlag 

Um Ihr Projekt visueller zu gestalten, können Sie je nach gespielter Note eine LED in einer anderen Farbe zum Leuchten bringen und die Notennamen und die Spielgeschwindigkeit anzeigen OLED-Bildschirm.

Vorheriger Beitrag
Nächster Beitrag

Danke fürs Abonnieren!

Diese E-Mail wurde registriert!

Shoppen Sie den Look
Wählen Sie Optionen

Bearbeitungsoption

Benachrichtigung wieder auf Lager

Vergleichen

Produkt ArtikelnummerBewertungBeschreibung Sammlung Verfügbarkeit Produktart Andere Details
this is just a warning
Anmeldung
Einkaufswagen
0 Artikel
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment