Inhaltsverzeichnis:
- Schritt 1: Konvertieren Sie die Musikpartitur in digitale Noten: Verzögerungswerte
- Schritt 2: Konvertieren Sie die Musikpartitur in digitale Noten: Hertz-Werte
- Schritt 3: Schaltungsdesign
- Schritt 4: Code-Upload: How-To
- Schritt 5: Code-Upload: Was bedeutet das alles?
- Schritt 6: Fertig!
Video: Digitalisieren Sie einen Song mit Arduino - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Ich wollte ein Projekt schaffen, das zwei meiner Lieblingsfächer kombiniert: Wissenschaft und Musik. Ich dachte an alle Möglichkeiten, wie ich diese beiden Domänen kombinieren könnte, und dachte, dass es interessant wäre, ein Arduino Fur Elise spielen zu lassen, während die Tonhöhe der Note in Hertz angezeigt wird. Jetzt fangen wir an zu bauen!
Sie benötigen einen Arduino Uno oder Mega, viele Überbrückungskabel, einen Piezo-Summer, ein Steckbrett, einen 16 * 2-LCD-Bildschirm mit allen Wischerstiften und ein 10k-Potentiometer (Sie können auch hören, dass sie als Potmeter bezeichnet werden).). Es ist am besten, alle diese Vorräte zusammenzustellen, bevor wir mit dem Bau beginnen.
Schritt 1: Konvertieren Sie die Musikpartitur in digitale Noten: Verzögerungswerte
Es gibt zwei Schritte, um eine Note aus der Partitur digital in ihr digitales Äquivalent zu transkribieren. Zuerst müssen wir die Dauer der Notiz in Millisekunden schreiben. Ich habe für diese Aufgabe ein online gefundenes Diagramm verwendet. Basierend darauf, ob eine Note eine halbe Note, eine Viertelnote, eine Achtelnote usw. war, habe ich die Notenlänge in Millisekunden transkribiert. Sie können diese Zahlen in meinem Code als delay() sehen; -Funktion und die Zahl in Klammern ist der Verzögerungswert in Millisekunden, den wir in diesem Schritt ermittelt haben.
Schritt 2: Konvertieren Sie die Musikpartitur in digitale Noten: Hertz-Werte
Bevor Sie mit diesem Schritt beginnen, lassen Sie mich einige technische Begriffe definieren. Der "Wert" einer Note kann austauschbar mit den Wörtern "Tonhöhe", "Wert" und "Note" verwendet werden. Jetzt müssen Sie jede Note des Liedes aus der Partitur lesen. Sie müssen dann jede Note in Hertz übersetzen, indem Sie eine Musik-in-Hertz-Tabelle verwenden, die Sie leicht online finden können. Denken Sie daran, dass das mittlere C in der Tabelle als C4 aufgeführt ist und eine Oktave höher als C5 und so weiter. Sobald diese Noten alle in Hertz transkribiert sind, werden Sie die Werte in die Funktion Tone(x, y, z) setzen; wobei X die Pinnummer oder const int ist, eine Möglichkeit, Variablen zu definieren, die ich später erläutern werde. Y ist der Hertz-Wert, den Sie gerade transkribiert haben, und Z ist die Dauer der Note in Millisekunden, gerundet auf das nächste Hundertstel. Die Verzögerung(); Werte sind die Dauer der Note. Lassen Sie uns nun die Schaltung entwerfen, die die Musik abspielen kann.
Schritt 3: Schaltungsdesign
Nachdem wir alle Noten in digitale Werte übersetzt haben, die ein Computer verstehen kann, ist es an der Zeit, die Schaltung aufzubauen. Beginnen Sie, indem Sie ein Steckbrett nehmen und den LCD-Bildschirm mit dem ersten Pin (GND) in Reihe 14 platzieren. Platzieren Sie den Summer an einer beliebigen Stelle und platzieren Sie ein Potentiometer daneben. Das Ziel ist es, alles auszurichten, um die Kabelsalat zu minimieren. Platzieren Sie den Arduino neben dem Steckbrett und verbinden Sie den 5V-Pin mit der positiven Schiene des Steckbretts und den Massestift mit der negativen Schiene. Jetzt sind wir bereit, Jumper zwischen dem Arduino und den Komponenten zu verbinden.
Lassen Sie uns nun über die Pins auf dem LCD sprechen und wie man sie verdrahtet.
GND steht für Masse, das ist der negative Draht bei Gleichstrom. Verbinden Sie GND mit der negativen Schiene des Steckbretts.
VCC steht für Voltage at the Common Collector, und hier schließen Sie Ihre 5-Volt-Stromquelle (die positive Stromschiene) an.
VO steht für Contrast, verdrahten Sie dies mit dem mittleren Pin des Potentiometers. Verbinden Sie den linken Pin des Potentiometers mit der positiven Stromschiene und den rechten Pin mit der Massestromschiene.
RS steht für Register Select und wird vom Arduino verwendet, um dem Display mitzuteilen, wo die Daten gespeichert werden sollen. Verbinden Sie diesen Pin mit Pin 12 auf dem Arduino.
RW steht für Read/Write-Pin, mit dem der Arduino überprüft, ob der Bildschirm anzeigt, was Sie programmiert haben. Verbinden Sie diesen Stift mit der negativen Schiene auf dem Steckbrett.
E steht für Enable, was dem LCD mitteilt, welche Pixel aktiviert (ein) oder deaktiviert (ausgeschaltet) werden sollen. Verbinden Sie diesen Pin mit dem Arduino-Pin 11.
D4, D5, D6 und D7 sind Anzeigestifte, die die angezeigten Zeichen und Buchstaben steuern. Verbinden Sie sie mit den Arduino-Pins 5, 4, 3 bzw. 2.
Pin A, manchmal mit LED bezeichnet, ist die LED-Anode für die Hintergrundbeleuchtung. Verbinden Sie diese mit einem Draht oder mit einem 220-Ohm-Widerstand mit der positiven Stromschiene. Der Widerstand ist besser für den längeren Gebrauch, da er das LCD schont, aber wenn das Gerät Tag und Nacht nicht verwendet wird, benötigen Sie den Widerstand nicht.
Pin K, manchmal auch (verwirrend) mit LED bezeichnet, ist der LED-Massepin. Verbinden Sie diese mit der Erdungsstromschiene.
Schritt 4: Code-Upload: How-To
Schließen Sie Ihr Arduino an den USB Ihres Computers an. Laden Sie den folgenden Code mit dem Arduino IDE-Programmierer hoch.
#enthalten
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; Flüssigkristallanzeige (rs, en, d4, d5, d6, d7);
Leere Einrichtung () {
// die Anzahl der Spalten und Zeilen des LCD einrichten: lcd.begin (16, 2); // Eine Nachricht auf dem LCD ausgeben. lcd.print("Hertz Pitch:!"); Verzögerung (1000); Void Schleife () {// e4 Verzögerung (600); // Pause für 0,6 Sekunden Ton (10, 329.63, 300); // e zum Summer an Pin 10 abspielen, zuletzt für 0,3 Sekunden lcd.print (" 329.63"); // eine Meldung auf dem LCD "329.63" anzeigen
Verzögerung (350); // Verzögerung um 0,35 Sekunden
lcd.clear (); // LCD löschen und für nächste Nachricht zurücksetzen // d4 # Ton abspielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (350); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (350); lcd.clear(); // d4 # Ton spielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (350); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (350); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.66, 300); lcd.print("293.66"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 900); lcd.print("220.0"); Verzögerung (1000); lcd.clear();//line60//helpsave//avrdude.failure.eeprom // d3-Ton spielen (10, 146.83, 300); lcd.print("146.63"); Verzögerung (350); lcd.clear(); // f3-Ton spielen (10, 174.61, 300); lcd.print("174.61"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 300); lcd.print("220"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 900); lcd.print("246.94"); Verzögerung (1000); lcd.clear();
// e3 spielen
Ton (10, 164,81, 300); lcd.print("164.81"); Verzögerung (400); lcd.clear(); // g3 # Ton spielen (10, 207.65, 300); lcd.print("207.65"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 900); lcd.print("261.63"); Verzögerung (1000); lcd.clear(); // e-Ton spielen (10, 164,81, 300); lcd.print("164.81"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // d4 # Ton spielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // d4 # Ton spielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.66, 300); lcd.print("293.66"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 900); lcd.print("220.0"); Verzögerung (1000); lcd.clear(); // d3-Ton spielen (10, 146.83, 300); lcd.print("146.83"); Verzögerung (400); lcd.clear(); // f3-Ton spielen (10, 174.61, 300); // eeprom 20--6 ja nein, flash 65--0 nein lcd.print ("174.61"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 300); lcd.print("220.0"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 900); lcd.print("246.94"); Verzögerung (1000); lcd.clear(); // f3-Ton spielen (10, 174.61, 300); lcd.print("174.61"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 900); lcd.print("220.0"); Verzögerung (1000); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.66, 300); lcd.print("293.66"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 900); lcd.print("329.63"); Verzögerung (1000); lcd.clear(); // g3-Ton spielen (10, 196, 300); lcd.print("196.0"); Verzögerung (400); lcd.clear(); // f4-Ton spielen (10, 349.23, 300); lcd.print("349.23"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.23, 300); lcd.print("329.23"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.63, 900); lcd.print("293.63"); Verzögerung (1000); lcd.clear(); // e3-Ton spielen (10, 164,81, 300); lcd.print("164.81"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.63, 300); lcd.print("293.63"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 900); lcd.print("261.63"); Verzögerung (1000); lcd.clear(); // d3-Ton spielen (10, 146.83, 300); lcd.print("146.83"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.63, 300); lcd.print("293.63"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 900); lcd.print("246.94"); Verzögerung (1000); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // d4 # Ton spielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (350); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (350); lcd.clear(); // d4 # Ton spielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (350); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (350); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.66, 300); lcd.print("293.66"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 900); lcd.print("220.0"); Verzögerung (1000); lcd.clear(); // d3-Ton spielen (10, 146.83, 300); lcd.print("146.83"); Verzögerung (350); lcd.clear(); // f3-Ton spielen (10, 174.61, 300); lcd.print("174.61"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 300); lcd.print("220.0"); Verzögerung (400); // b3 lcd.clear () spielen; Ton (10, 246.94, 900); lcd.print("246.94"); Verzögerung (1000); lcd.clear(); // e3-Ton spielen (10, 164,81, 300); lcd.print("164.81"); Verzögerung (400); lcd.clear(); // g#3-Ton spielen (10, 207.65, 300); lcd.print("207.65"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 900); lcd.print("261.63"); Verzögerung (1000); Verzögerung (300); lcd.clear(); // e3-Ton spielen (10, 164,81, 300); lcd.print("164.81"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // d4 # Ton spielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // d4 # Ton spielen (10, 311.13, 300); lcd.print("311.13"); Verzögerung (400); lcd.clear(); // e4-Ton spielen (10, 329.63, 300); lcd.print("329.63"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // d4-Ton spielen (10, 293.66, 300); lcd.print("293.66"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 900); lcd.print("220.0"); Verzögerung (1000); lcd.clear(); // d3-Ton spielen (10, 146.83, 300); lcd.print("146.83"); Verzögerung (400); lcd.clear(); // f3-Ton spielen (10, 174.61, 300); lcd.print("174.61"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 300); lcd.print("220.0"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 900); lcd.print("246.94"); Verzögerung (1000); lcd.clear(); // f3-Ton spielen (10, 174.61, 300); lcd.print("174.61"); Verzögerung (400); lcd.clear(); // c4-Ton spielen (10, 261.63, 300); lcd.print("261.63"); Verzögerung (400); lcd.clear(); // b3-Ton spielen (10, 246.94, 300); lcd.print("246.94"); Verzögerung (400); lcd.clear(); // a3-Ton spielen (10, 220, 900); lcd.print("220.0"); Verzögerung (1000); lcd.clear(); }
Schritt 5: Code-Upload: Was bedeutet das alles?
Lassen Sie uns einige Funktionen auf Englisch definieren, damit Sie den Code verstehen.
Ton (x, y, z); = einen Ton mit einer Tonhöhe von y Hertz zu einem Summer an Pin x für z Millisekunden spielen.
lcd.print("XYZ"); = Drucken Sie eine Nachricht mit den Zeichen XYZ auf dem LCD-Bildschirm aus. (z. B. Hertz-Tonhöhe anzeigen)
Verzögerung(x); = Pause für x Millisekunden.
const int X=Y = eine konstante Variable X auf Pin Y setzen und entweder X oder Y verwenden, um dem Gerät Aufgaben zuzuweisen.
lcd.clear(); = Löschen Sie den LCD-Bildschirm und setzen Sie ihn für eine neue Anzeige zurück
pinMode (X, AUSGANG); = Pin X für Ausgabemodus setzen
Wenn Sie alle diese Funktionen verstanden haben, können Sie die Variablen ganz einfach durch die Daten ersetzen, die Sie beim Übersetzen eines Songs sammeln, und dann Ihren eigenen Song codieren!
Schritt 6: Fertig!
Sie haben entweder ein Arduino, das Fur Elise spielt und die Notenwerte in Hertz anzeigt, oder Sie haben ein Arduino erstellt, das die Melodie des von Ihnen ausgewählten Liedes spielt und den Text anzeigt, den Sie anzeigen möchten. Vielen Dank für Ihren Besuch in diesem Tutorial, und ich hoffe auf dieses Projekt auf dem Arduino.
Empfohlen:
So erstellen Sie einen Tiefpassfilter für einen Subwoofer mit dem NE5532-IC - DIY (ELECTROINDIA): 4 Schritte
So erstellen Sie einen Tiefpassfilter für einen Subwoofer mit dem NE5532-IC | DIY (ELECTROINDIA): In diesem Projekt zeige ich Ihnen, wie Sie einen Tiefpassfilter für Subwoofer herstellen können. Los geht's
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Hinzugefügte Informationen: 4 Schritte
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen … Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Zusätzliche Informationen: Wenn Sie jemals auf eine Website gehen und ein Lied abspielen, das Sie mögen und es wollen, dann ist hier das anweisbare für Sie, nicht meine Schuld, wenn Sie etwas durcheinander bringen (nur so wird es passieren, wenn Sie ohne Grund anfangen, Dinge zu löschen) ) Ich konnte Musik für
So kühlen Sie einen PC mit Wasser ab: 8 Schritte (mit Bildern)
So kühlen Sie einen PC mit Wasser: Warum sollten Sie einen PC mit Wasser kühlen? Zuallererst kann es viel leiser sein und die Temperatur Ihres Computers sinkt erheblich. Mein Quadcore ging von 50C unter Last auf 28C Idle und unter Last! Es ist auch gut zum Übertakten. Wenn Sie über
So reparieren Sie einen Wechselrichter mit LCD-Hintergrundbeleuchtung. Mit einem Fujiplus FP-988D. für 0 $.: 9 Schritte
So reparieren Sie einen Wechselrichter mit LCD-Hintergrundbeleuchtung. Mit einem Fujiplus FP-988D. für $ 0.: In diesem anweisbaren werde ich Sie durch die Reparatur eines toten LCD-Hintergrundlicht-Wechselrichters mit den Teilen führen, die Sie haben. Sie können feststellen, ob Sie ein totes Gegenlicht haben, indem Sie zuerst andere Möglichkeiten ausschließen. Monitor auf mehreren Computern überprüfen. Stellen Sie sicher, dass
So erstellen Sie einen Großelternkalender & Scrapbook (auch wenn Sie nicht wissen, wie man ein Scrapbook erstellt): 8 Schritte (mit Bildern)
So erstellen Sie einen Großelternkalender & Sammelalbum (auch wenn Sie nicht wissen, wie man Sammelalbum erstellt): Dies ist ein sehr wirtschaftliches (und sehr geschätztes!) Weihnachtsgeschenk für Großeltern. Ich habe dieses Jahr 5 Kalender für weniger als 7 US-Dollar pro Stück gemacht. Materialien: 12 tolle Fotos von Ihrem Kind, Kindern, Nichten, Neffen, Hunden, Katzen oder anderen Verwandten 12 verschiedene Stücke