- Erforderliche Hardware:
- Verständnis der Tone () - Funktion von Arduino:
- Die Pitches.h- Header-Datei:
- Musiknoten auf Arduino spielen:
- Schema und Hardware:
- Erklärung des Arduino-Programms:
- Arbeiten dieser Melodie-Player Arduino Circuit:
Arduino ist eine hervorragende Möglichkeit, Ihre Mikrocontroller-Projekte zu vereinfachen und zu beschleunigen, dank seiner Entwicklergemeinschaft, die fast alles einfach aussehen lässt. Es gibt hier draußen viele Arduino-Projekte, mit denen Sie versuchen können, Spaß zu haben. Einige Ihrer Projekte benötigen möglicherweise eine Soundaktion, um über etwas zu benachrichtigen oder nur um die Zuschauer zu beeindrucken. Was wäre, wenn ich Ihnen sagen würde, dass fast alle Titelsongs, die auf einem Klavier gespielt werden könnten, mit Hilfe eines einfachen Programms und eines billigen Piezo-Lautsprechers auf Ihrem Arduino nachgeahmt werden können?
In diesem Tutorial erfahren Sie, wie einfach und unkompliziert es ist, mit der Arduino Tone () -Funktion eine Melodie auf einem Piezo-Summer oder Lautsprecher abzuspielen. Am Ende dieses Tutorials können Sie einige berühmte Töne von Pirates of Caribbean, Crazy Frog, Super Mario und Titanic spielen. Sie werden auch lernen, wie man mit Arduino Klavier spielt. Überprüfen Sie das Video am Ende.
Erforderliche Hardware:
- Arduino (jede Version - UNO wird hier verwendet)
- Piezo-Lautsprecher / Summer oder ein anderer 8-Ohm-Lautsprecher.
- Steckbrett
- Kabel anschließen
- Drück Knöpfe
- 1k Widerstand (optional)
Verständnis der Tone () - Funktion von Arduino:
Bevor wir verstehen können, wie ein Ton () funktioniert, sollten wir wissen, wie ein Piezo-Summer funktioniert. Wir haben vielleicht in unserer Schule etwas über Piezokristalle gelernt. Es ist nichts anderes als ein Kristall, der mechanische Schwingungen in Elektrizität umwandelt oder umgekehrt. Hier legen wir einen variablen Strom (Frequenz) an, für den der Kristall vibriert und so Schall erzeugt. Damit der Piezo-Summer etwas Rauschen erzeugt, muss der elektrische Piezo-Kristall vibrieren. Die Tonhöhe und der Ton des Rauschens hängen davon ab, wie schnell der Kristall vibriert. Daher können der Ton und die Tonhöhe durch Variieren der Frequenz des Stroms gesteuert werden.
Okay, wie bekommen wir eine variable Frequenz von Arduino ? Hier kommt die Funktion ton () ins Spiel. Der Ton () kann eine bestimmte Frequenz an einem bestimmten Pin erzeugen. Bei Bedarf kann auch die Zeitdauer angegeben werden. Die Syntax für ton () lautet
Syntax Ton (Pin, Frequenz) Ton (Pin, Frequenz, Dauer) Parameter Pin: Der Pin, auf dem die Tonfrequenz erzeugt werden soll: Die Frequenz des Tons in Hertz - vorzeichenlose Int-Dauer: Die Dauer des Tons in Millisekunden (optional) - lange ohne Vorzeichen
Die Pin-Werte können beliebige Ihrer digitalen Pins sein. Ich habe hier Pin Nummer 8 verwendet. Die Frequenz, die generiert werden kann, hängt von der Größe des Timers in Ihrem Arduino-Board ab. Für UNO und die meisten anderen gängigen Karten beträgt die minimale Frequenz 31 Hz und die maximale Frequenz 65535 Hz. Wir Menschen können jedoch nur Frequenzen zwischen 2000 Hz und 5000 Hz hören.
Die Pitches.h- Header-Datei:
Jetzt wissen wir, wie man mit der Funktion arduino ton () etwas Rauschen erzeugt . Aber woher wissen wir, welche Art von Ton für jede Frequenz erzeugt wird?
Arduino hat uns eine Notentabelle gegeben, die jede Frequenz einem bestimmten Musiknotentyp gleichsetzt. Diese Notizentabelle wurde ursprünglich von Brett Hagman geschrieben, auf dessen Arbeit der Befehl ton () basierte. Wir werden diesen Notentisch verwenden, um unsere Themen zu spielen. Wenn Sie mit Noten vertraut sind, sollten Sie in der Lage sein, diese Tabelle zu verstehen. Für andere wie mich sind dies nur ein weiterer Codeblock.
#define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 # NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349#define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #def5 NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define_ NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS73729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
Der obige Code befindet sich in der Header-Datei Pitches.h in dieser Zip-Datei . Sie müssen diese Datei nur herunterladen und in unseren Arduino-Code aufnehmen, wie am Ende dieses Tutorials angegeben, oder den in der Zip-Datei angegebenen Code verwenden.
Musiknoten auf Arduino spielen:
Um mit Arduino eine anständige Melodie zu spielen, sollten wir wissen, was diese Melodien ausmacht. Die drei Hauptfaktoren, die zum Spielen eines Themas erforderlich sind, sind
- Wert notieren
- Dauer beachten
- Tempo
Wir haben die Pitches.h- Header-Datei, um jeden Notenwert abzuspielen. Jetzt sollten wir die spezifische Notendauer herausfinden, um sie abzuspielen. Tempo ist nichts anderes als wie schnell die Melodie gespielt werden soll. Sobald Sie den Notenwert und die Notendauer kennen, können Sie sie mit dem Ton () wie verwenden
Ton (PinName, Notenwert, Notendauer);
Für die in diesem Tutorial gespielten Töne habe ich Ihnen den Notenwert und die Notendauer in der Header-Datei "theme.h" angegeben, mit der Sie sie in Ihren Projekten abspielen können. Aber wenn Sie einen bestimmten Ton in Ihrer Mine haben und ihn in Ihrem Projekt abspielen möchten, lesen Sie weiter… Andernfalls überspringen Sie dieses Thema und fallen Sie zum nächsten über.
Um einen bestimmten Ton zu spielen, müssen Sie die Noten dieser bestimmten Musik abrufen und die Noten in eine Arduino-Skizze konvertieren, indem Sie den Notenwert und die Notendauer daraus lesen. Wenn Sie ein Musikstudent sind, wäre es ein Kinderspiel für Sie, sonst verbringen Sie einige Zeit und brechen Sie den Kopf wie ich. Aber am Ende des Tages, wenn Ihr Ton auf dem Piezo-Summer spielt, werden Sie feststellen, dass sich Ihre Mühe lohnt.
Sobald Sie den Notenwert und die Notendauer festgelegt haben, laden Sie sie wie unten gezeigt in das Programm in der Header-Datei „theme.h“
// ############### ** "ER IST EIN PIRAT" Titellied der Fluch der Karibik ** ############## // int Pirates_note = {NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4 NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_C4, NOTE_D4, 0, NOTE_A3, NOTE_C4, NOTE_B4 NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_D4, 0, 0, NOTE_A3, NOTE_C4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_A4 0, NOTE_D4, NOTE_E3, NOTE_F4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_D4, 0, NOTE_D4, NOTE_F4,NOTE_E4, NOTE_E4, NOTE_F4, NOTE_D4}; int Pirates_duration = {4,8,4,8,4,8,8,8,8,4,8,4,8,4,8,8,8,8,8,4,8,4,8, 4, 8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,8,8, 4,4,8,8,4,4,8,4, 4,8,8,8,8,4,4,8,8,4,4,8,8,4,4,8,8, 8,4,8,8,8,4,4,4,8,4,8,8,8,4,4,8,8}; // ########### End of He ist ein Piratenlied ############## //
Der obige Codeblock zeigt den Notenwert und die Notendauer des Themas „Er ist ein Pirat“ aus dem Film Fluch der Karibik. Sie können Ihr Thema auf ähnliche Weise hinzufügen.
Schema und Hardware:
Das Schema dieses Arduino Tone Generator- Projektprojekts ist in der folgenden Abbildung dargestellt:
Die Verbindung ist ziemlich einfach. Wir haben einen Piezo-Lautsprecher, der über einen 1K-Widerstand mit Pin 8 und Masse des Arduino verbunden ist. Dieser 1k-Widerstand ist ein Strombegrenzungswiderstand, der verwendet wird, um den Strom innerhalb der sicheren Grenzen zu halten. Wir haben auch vier Schalter, um die gewünschte Melodie auszuwählen. Ein Ende des Schalters ist mit Masse und das andere Ende mit Pin 2, 3, 4 bzw. 5 verbunden. Die Schalter haben Pull-up-Widerstände, die intern mit der Software aktiviert werden. Da die Schaltung ziemlich einfach ist, kann sie wie unten gezeigt über ein Steckbrett angeschlossen werden:
Erklärung des Arduino-Programms:
Sobald Sie das Konzept verstanden haben, ist das Arduino-Programm ziemlich einfach. Der vollständige Code wird am Ende des Tutorials angegeben. Wenn Sie mit dem Hinzufügen von Header-Dateien nicht vertraut sind, können Sie den Code hier als ZIP-Datei herunterladen und direkt auf Ihr Arduino hochladen.
Die beiden oben genannten sind die Header-Dateien, die hinzugefügt werden müssen. "Pitches.h" wird verwendet, um jede Musiknote einer bestimmten Frequenz gleichzusetzen, und "theme.h" enthält den Notenwert und die Notendauer aller vier Töne.
#include "Pitches.h" #include "Themes.h"
Es wird eine Funktion erstellt, um bei Bedarf jeden Ton abzuspielen. Wenn hier die Funktion Play_Pirates () aufgerufen wird, wird der Ton „Er ist ein Pirat“ gespielt. Diese Funktion besteht aus der Tonfunktion, die die Frequenz an Pin Nummer 8 erzeugt. Der noTone (8) wird aufgerufen, um die Musik zu stoppen, sobald sie abgespielt wird. Wenn Sie Ihren eigenen Ton spielen möchten, ändern Sie die Werte für Pirates_note und Pirates_duration in die neuen Werte für Note und Dauer, die Sie im Wert für "theme.h" gespeichert haben
void Play_Pirates () {for (int thisNote = 0; thisNote <(sizeof (Pirates_note) / sizeof (int)); thisNote ++) {int noteDuration = 1000 / Pirates_duration; // konvertiere die Dauer in einen Zeitverzögerungston (8, Pirates_note, noteDuration)); int pauseBetweenNotes = noteDuration * 1.05; // Hier ist 1.05 Tempo, erhöhen Sie, um es langsamer zu spielen Verzögerung (pauseBetweenNotes); noTone (8); }}
Die Pins 2, 3, 4 und 5 werden verwendet, um den bestimmten zu spielenden Ton auszuwählen. Diese Pins werden standardmäßig mithilfe der internen Pull-up-Widerstände unter Verwendung der obigen Codezeile hoch gehalten. Wenn der Knopf gedrückt wird, wird er auf den Boden gezogen.
pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); pinMode (4, INPUT_PULLUP); pinMode (5, INPUT_PULLUP);
Der folgende Codeblock wird verwendet, um das Lied abzuspielen, wenn eine Taste gedrückt wird. Es liest den digitalen Wert jeder Taste und wenn es niedrig (Null) wird, nimmt es an, dass die Taste gedrückt wird und spielt den entsprechenden Ton durch Aufrufen der gewünschten Funktion.
if (digitalRead (2) == 0) {Serial.println ("Ausgewählt -> 'Er ist ein Pirat'"); Play_Pirates (); } if (digitalRead (3) == 0) {Serial.println ("Selected -> 'Crazy Frog'"); Play_CrazyFrog (); } if (digitalRead (4) == 0) {Serial.println ("Ausgewählt -> 'Mario UnderWorld'"); Play_MarioUW (); } if (digitalRead (5) == 0) {Serial.println ("Ausgewählt -> 'Er ist ein Pirat'"); Play_Pirates (); }}
Arbeiten dieser Melodie-Player Arduino Circuit:
Sobald Ihr Code und Ihre Hardware fertig sind, brennen Sie das Programm einfach in Ihr Arduino und Sie sollten in der Lage sein, den Ton durch einfaches Drücken der Tasten abzuspielen. Wenn Sie Probleme haben, schauen Sie zum Debuggen auf Ihren seriellen Monitor oder melden Sie das Problem im Kommentarbereich. Ich helfe Ihnen gerne weiter.
Die vollständige Arbeitsweise des Projekts ist im folgenden Video dargestellt. Ich hoffe, Ihnen hat das Projekt gefallen und Sie würden es in einigen Ihrer Projekte verwenden oder einen neuen Ton für Ihr Projekt erstellen. Wenn ja, können Sie Ihre Arbeit im Kommentarbereich teilen.