Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Elektronische Klaviertastatur mit voreingestellten Songs

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Adafruit Standard LCD - 16x2 Weiß auf Blau
× 1
SparkFun Drucktastenschalter 12 mm
× 8
Widerstand 220 Ohm
× 4
Widerstand 560 Ohm
× 1
Widerstand 1k Ohm
× 1
Widerstand 4,7K Ohm
× 1
Widerstand 10k Ohm
× 3
Widerstand 1 M Ohm
× 1
Summer
× 1
LED (generisch)
× 1
Single Turn Potentiometer - 10k Ohm
× 1
Jumper (generisch)
× 1
Breadboard (generisch)
× 1

Über dieses Projekt

Einführung

Zu Beginn sollte ich Ihnen mitteilen, dass ich völlig neu in der Welt der Elektronik bin. Ich habe einen guten Hintergrund im Programmieren, was hilfreich ist, aber ich bin immer offen für neue Ideen und Vorschläge für jedes der von mir erstellten Projekte.

Vor kurzem habe ich mehr über den Piezo Buzzer und die damit verbundene Codierung gelernt, und dies ist meine Kreation basierend auf dem, was ich bisher gelernt habe. Es gibt viel Raum für Erweiterungen mit neuen Funktionen oder Schaltern, was ich später vorhabe, aber jetzt geht es zur nächsten Herausforderung!

Unten sehen Sie ein Video zur Funktionsweise des Geräts, einschließlich des Menüs mit voreingestellten Songs. Ich gebe zu, Song 4 und 5 sind technisch gesehen gleich, aber was soll ich sagen, ich habe den Drang, größere und bessere Dinge zu schaffen und den Musikcode für mehr Songs zu schreiben war nicht einer davon! Die grundlegende Codierung sowohl für die Haupt-Loops als auch für die einzelnen Song-Loops lässt sich ziemlich einfach an Ihre eigenen Ideen anpassen, also können Sie sie nach Belieben ändern.

Sehen Sie es in Aktion!

So richten Sie die Hardware ein

Die Klaviertasten...

Die Klaviertastenschalter wurden mit einer Widerstandsleiter verbunden. Die Widerstände sind in sequentieller Reihenfolge angeordnet und verbinden jeden Schalter mit der Stromversorgung. Für mein Projekt habe ich mich für 1 M, 10 K, 4,7 K, 1 K, 560 und 220 (in Ohm) entschieden.  Der erste Klavierschalter (links) ist mit Strom verbunden und auch mit dem nächsten Schalter im Stromkreis. Der zweite Schalter ist mit dem kleinsten Widerstand verbunden, und jeder Schalter danach ist mit dem nächstgrößten Widerstand in der Reihe verbunden. Der letzte Schalter erdet die Verbindung über einen 10k Ohm Widerstand und verbindet auch alle 7 Schalter mit dem "Analog In" Pin A0 des Arduino. Die Hauptskizze definiert, welche Musiknotenfrequenzen jeder Klaviertaste zugeordnet sind. Für dieses Projekt habe ich C4, D4, E4, F4, G4, A4 und B4 verwendet, wobei C4 der Schalter ganz links ist. Ändern Sie die Frequenzwerte oder fügen Sie zusätzliche Schalter hinzu, um Ihr eigenes Projekt vollständig anzupassen!

Der LCD-Bildschirm...

Schließen Sie die LCD-Pins gemäß dem folgenden Schaltplan an. Verbinden Sie den LCD-Pin 3 mit dem Potentiometer zur Kontraststeuerung des Bildschirms. Die äußeren Pins des Potentiometers sind mit Strom und Masse verbunden, um diesen Stromkreis zu vervollständigen. Der LCD-Pin 15 ist über einen 220-Ohm-Widerstand mit Strom verbunden. Wenn sich einer dieser Pins in Ihrem eigenen Projekt ändert, aktualisieren Sie den Code entsprechend.

Der Menüschalter...

Schließen Sie den Menüschalter an die Stromversorgung an und erden Sie ihn über einen 10K Ohm Widerstand. Dieser Schalter sollte auch an Pin 7 des Arduino angeschlossen werden, damit Sie ihn per Codierung steuern können.

Die LED...

Die LED wird verwendet, um anzuzeigen, wenn Sie sich im "Menümodus" befinden und die Klaviertasten deaktiviert wurden. Das LED-Licht schaltet sich ein, sobald der Menüschalter gedrückt wird. Verbinden Sie die Anode (positiv) der LED mit Pin 6 des Arduino und erden Sie die LED über einen 220 Ohm Widerstand.

Der Piezo-Summer...

Um den Piezo Buzzer zu integrieren, verbinden Sie einfach ein Ende mit dem Arduino-Pin 8 und die andere Seite über einen 220-Ohm-Widerstand mit Masse. Die "Ton"-Funktion im Code sucht nach diesem Pin, um die aufgerufene Note zu spielen.

So funktioniert der Code

Die Einrichtung...

  • Der Sketch beginnt mit dem Importieren der Bibliotheken "LiquidCrystal.h" und "pitches.h", damit wir später im Code auf verschiedene Elemente daraus verweisen können
  • Als nächstes wird der Code eingerichtet, indem ein Name für den Menüschalter definiert wird, welche Pins Eingänge oder Ausgänge sind und die Frequenzwerte für jede der 7 Klaviertasten eingestellt werden
  • Für jeden einzelnen Song wurde ein neuer Tab erstellt, um meinen Code etwas organisiert und verständlicher zu halten und später zu erweitern. Wenn Sie weitere Songs löschen oder hinzufügen möchten, müssen Sie auch den Code in der Hauptskizze "Elektronische Tastatur" ändern.

Die Hauptschleife...

  • Die Tastatur beginnt mit ausgeschalteter LED und allen aktiven Klaviertasten
  • Sobald der Loop erkennt, dass die Menütaste gedrückt wurde, deaktiviert er die Klaviertasten und schaltet die LED ein, um anzuzeigen, dass Sie sich im "Menümodus" befinden

Auf das Menü zugreifen...

  • Drücken Sie die Menütaste, um durch die aktuellen Lieder zu blättern, und drücken Sie eine der Klaviertasten, um die Wiedergabe des auf dem LCD-Bildschirm angezeigten Liedes zu starten
  • Der LCD-Bildschirm zeigt an, welcher Song gerade abgespielt wird, und kehrt dann zum gleichen Punkt im Menü zurück, sobald der Song fertig abgespielt wurde. Von dort aus können Sie die Liste der verfügbaren Songs entweder wiederholen oder fortsetzen.
  • Doppelklicken auf die Menüschaltfläche startet das Menü von vorne
  • Um zur Verwendung der Klaviertasten zurückzukehren, blättern Sie durch die restlichen Songs im Menü. Sobald der LCD-Bildschirm leer ist und die LED aus ist, funktionieren die Klaviertasten wieder.

Code

  • Elektronische Tastatur
  • Lied1
  • Lied2
  • Lied3
  • Lied4
  • Lied5
  • Stellplätze.h
Elektronische TastaturArduino
Der Hauptcode
// LCD-Bildschirm, Schalter &LED-Setup#include #include "pitches.h"LiquidCrystal lcd(12, 11, 5, 4, 3, 2));const int LCDswitchPin =7; // Menü-/LCD-Schalter definieren nameint LCDswitchState =0; // setze den Menü-/LCD-Schalterzustand auf off/lowint prevLCDswitchState =0;int blueLED =6;int LCDswitchCounter =0; // Zähler für die Anzahl der Menütastendrücke // (dieser Code zählt die Menütastendrücke, zeigt sie auf Ihrem Computer an, // und beginnt nach dem Beenden des "Menümodus" bei Null. hat derzeit keine anderen Auswirkungen // auf diese Skizze , ist aber ein guter Ausgangspunkt für die Erweiterung des Projekts mit // neuen Funktionen später // Music Note Keys - Set frequency valuesint notes[] ={262, 294, 330, 349, 392, 440, 494}; // Set Noten C, D, E, F, G, A, B/////////////////////////////////// //////////void setup () { Serial.begin (9600); lcd.begin (16, 2); pinMode (LCDswitchPin, INPUT); pinMode (blueLED, OUTPUT); digitalWrite (blueLED, LOW ); // LED bleibt aus, solange die Pianotasten eingeschaltet sind } // Setup beenden ///////////////////////////////// /////////////void loop () { LCDswitchState =digitalRead (LCDswitchPin); int keyVal =analogRead (A0); Serial.println (keyVal); lcd.noDisplay (); digitalWrite (blueLED, LOW); // LED bei jedem Start der Hauptschleife wieder ausschalten // ************** "LCDstart" STARTEN, WENN MENÜTASTE GEDRÜCKT WIRD ******** *** if (LCDswitchState ==HIGH) { digitalWrite (blueLED, HIGH); // LED einschalten, um anzuzeigen, dass die Klaviertasten deaktiviert sind und sich das Gerät im "Menümodus" befindet lcd.display (); lcd.clear(); LCDstart(); } // ************************************************ ************************ ////// TASTATURHINWEISE UND FREQUENZANWEISUNGEN //////// Verwenden Sie die von Ihnen erstellte Widerstandsleiter, um ändern Sie die Spannung jeder Klaviertaste // 220 Ohm =C5 // 560 Ohm =D5 // 1K Ohm =E5 // etc ... if (keyVal ==1023) {tone (8, notes[0]); // C} // Ende if else if(keyVal>=990 &keyVal <=1010) { Tone(8, Noten[1]); // D } // Ende else if else if(keyVal>=960 &&keyVal <=980) { Tone(8, Noten [2]); // E} // Ende else if else if(keyVal>=900 &&keyVal <=945) { Tone(8, Noten[3]); // F} // Ende else if else if(keyVal>=650 &&keyVal <=710) { Tone(8, Noten[4]); // G} // Ende else if else if(keyVal>=500 &&keyVal <=550) { Tone(8, Noten[5]); // A} // Ende else if else if(keyVal>=5 &&keyVal <=10) { Tone(8, Noten[6]); // B } // Ende else if else if(keyVal <=1) { // wenn kein Schalter gedrückt wird, Ton nicht spielen noTone(8); } // Ende sonst, wenn} // Frequenz Tonschleife beenden //////////////////////////////////// ////////////////void LCDstart () { int keyVal =analogRead (A0); LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste prüfen während (LCDswitchState ==LOW) {// Schleife fortsetzen, während die Menütaste nicht gedrückt wird LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste bei jedem Schleifenstart prüfen //************* START SONG 1 TITLE LOOP ****************** * if (LCDswitchState ==HIGH) {// wenn die Menütaste gedrückt wird, dann... LCDswitchCounter++; // Tastenanzahl auf 1 setzen Serial.print ("Anzahl der Tastendrücke:"); Serial.println (LCDswitchCounter); Verzögerung (300); // Mindest. Zeit, bis zählt, fügt 1 weiteren hinzu Song1title(); lcd.clear(); brechen; } //**************** ELSE SHOW MENU ************** else { // wenn die Menütaste nicht gedrückt wird, dann... LCDswitchZähler=0; // Anzahl der Menütasten auf 0 setzen lcd.clear (); lcd.setCursor(0, 0); lcd.print ("WELCHES LIED WÜRDE"); lcd.setCursor(0, 1); lcd.print("DU MÖCHTEST SPIELEN"); Verzögerung (50); // zurück zum Main } } // end while } // LCDstart loop beenden // ************* SONG 1 LOOP STARTS HERE ************* * Void Song1title () { Int keyVal =analogRead (A0); LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen während (LCDswitchState ==LOW) {// Schleife fortsetzen, während die Menütaste nicht gedrückt wird LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen //**************** START SONG 2 TITLE LOOP ***************** if ( LCDswitchState ==HIGH) {// Wenn die Menütaste gedrückt wird, dann... LCDswitchCounter++; // Tastenanzahl auf 2 setzen Serial.print ("Anzahl der Tastendrücke:"); Serial.println (LCDswitchCounter); Verzögerung (300); // Mindest. Zeit, bis zählt, fügt 1 weiteren hinzu Song2title(); lcd.clear(); brechen; aufrechtzuerhalten. Sonst {// wenn die Menütaste nicht gedrückt wird Int keyVal =analogRead (A0); Serial.println (keyVal); if (keyVal>=2) { digitalWrite (blueLED, LOW); Lied1(); brechen; } // Ende if lcd.clear(); lcd.setCursor(0, 0); lcd.print ("SUPER MARIO BROS"); lcd.setCursor(0, 1); lcd.print(" THEMENLIED"); Verzögerung (50); } } // beenden, während Song 1 -> 2 } // Song1title loop beenden // ************* SONG 2 LOOP STARTS HERE ************* * Void Song2title () { Int keyVal =analogRead (A0); LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen während (LCDswitchState ==LOW) {// Schleife fortsetzen, während die Menütaste nicht gedrückt wird LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen //**************** START SONG 3 TITLE LOOP ***************** if ( LCDswitchState ==HIGH) {// Wenn die Menütaste gedrückt wird, dann... LCDswitchCounter++; // Tastenanzahl auf 3 setzen Serial.print ("Anzahl der Tastendrücke:"); Serial.println (LCDswitchCounter); Verzögerung (300); // Mindest. Zeit, bis zählt, fügt 1 weiteren hinzu Song3title(); lcd.clear(); brechen; aufrechtzuerhalten. Sonst {// wenn die Menütaste nicht gedrückt wird Int keyVal =analogRead (A0); Serial.println (keyVal); if (keyVal>=2) { digitalWrite (blueLED, LOW); Lied2(); brechen; } // Ende if lcd.clear(); lcd.setCursor(0, 0); lcd.print ("SUPER MARIO BROS"); lcd.setCursor(0, 1); lcd.print("UNTERWELT"); Verzögerung (50); } } // Ende während Song 2 -> 3 } // Song2title loop beenden // ************* SONG 3 LOOP STARTS HERE ************* * Void Song3title () { Int keyVal =analogRead (A0); LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen während (LCDswitchState ==LOW) {// Schleife fortsetzen, während die Menütaste nicht gedrückt wird LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen //**************** START SONG 4 TITLE LOOP ***************** if ( LCDswitchState ==HIGH) {// Wenn die Menütaste gedrückt wird, dann... LCDswitchCounter++; // Tastenanzahl auf 4 setzen Serial.print ("Anzahl der Tastendrücke:"); Serial.println (LCDswitchCounter); Verzögerung (300); // Mindest. Zeit, bis zählt, fügt 1 weiteren hinzu Song4title(); lcd.clear(); brechen; aufrechtzuerhalten. Sonst {// wenn die Menütaste nicht gedrückt wird Int keyVal =analogRead (A0); Serial.println (keyVal); if (keyVal>=2) { digitalWrite (blueLED, LOW); Lied3(); brechen; } // Ende if lcd.clear(); lcd.setCursor(0, 0); lcd.print("GEFAHR"); lcd.setCursor(0, 1); lcd.print(" THEMENLIED"); Verzögerung (50); } } // Ende während Song 3 -> 4 } // Song3title loop beenden // ************* SONG 4 LOOP STARTS HERE ************* * Void Song4title () { Int keyVal =analogRead (A0); LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen während (LCDswitchState ==LOW) {// Schleife fortsetzen, während die Menütaste nicht gedrückt wird LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen //**************** START SONG 5 TITLE LOOP ***************** if ( LCDswitchState ==HIGH) {// Wenn die Menütaste gedrückt wird, dann... LCDswitchCounter++; // Tastenanzahl auf 5 setzen Serial.print ("Anzahl der Tastendrücke:"); Serial.println (LCDswitchCounter); Verzögerung (300); // Mindest. Zeit, bis zählt, fügt 1 weiteren hinzu Song5title(); lcd.clear(); brechen; aufrechtzuerhalten. Sonst {// wenn die Menütaste nicht gedrückt wird Int keyVal =analogRead (A0); Serial.println (keyVal); if (keyVal>=2) { digitalWrite (blueLED, LOW); Lied4(); brechen; } // Ende if lcd.clear(); lcd.setCursor(0, 0); lcd.print("LIED 4"); lcd.setCursor(0, 1); lcd.print("TITEL HIER"); Verzögerung (50); } } // Ende während Song 4 -> 5 } // Song4title loop beenden // ************* SONG 5 LOOP STARTS HERE ************* * Void Song5title () { Int keyVal =analogRead (A0); LCDswitchState =digitalRead (LCDswitchPin); // Zustand der Menütaste erneut prüfen während (LCDswitchState ==LOW) {// Schleife fortsetzen, während die Menütaste nicht gedrückt wird LCDswitchState =digitalRead (LCDswitchPin); // Status der Menütaste erneut prüfen //**************** START SONG 4 TITLE LOOP ***************** if ( LCDswitchState ==HIGH) {// wenn die Menütaste gedrückt wird, dann... LCDswitchCounter=0; // Tastenanzahl auf 0 setzen Serial.print ("Anzahl der Tastendrücke:"); Serial.println (LCDswitchCounter); Verzögerung (300); // Mindest. Zeit bis Zählung fügt 1 weitere hinzu lcd.clear(); aufrechtzuerhalten. Sonst {// wenn die Menütaste nicht gedrückt wird Int keyVal =analogRead (A0); Serial.println (keyVal); if (keyVal>=2) { digitalWrite (blueLED, LOW); Lied5(); brechen; } // Ende if lcd.clear(); lcd.setCursor(0, 0); lcd.print("LIED 5"); lcd.setCursor(0, 1); lcd.print("TITEL HIER"); Verzögerung (50); } } // Ende während Song 4 -> 5 } // Song5title Schleife beenden
Lied1Arduino
Code für das erste Lied. Momentan ist der Mario Bros Theme Song geladen.
//******************** SONG 1 NOTES HERE ************** **********////////////////////////////////////// //////////////////////////////////////////////// /////////////////////// VOLLSTÄNDIGE ANLEITUNG ZUM ERSTELLEN DER MARIO-SONGS FINDEN SIE HIER:///////////// ///////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -Piezo-Summer/ /////////////////////////////////////////// //////////////////////////////////////////////// ////////void Song1() { lcd.clear();// Noten in der Melodie:int Melodie[] ={ NOTE_E7, NOTE_E7, 0, NOTE_E7, 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, 0, 0, ANMERKUNG_G6, 0, 0, 0, ANMERKUNG_C7, 0, 0, ANMERKUNG_G6, 0, 0, ANMERKUNG_E6, 0, 0, ANMERKUNG_A6, 0, ANMERKUNG_B6, 0, ANMERKUNG_AS6, ANMERKUNG_A6, 0, ANMERKUNG_G6, ANMERKUNG_E7, ANMERKUNG_G7, ANMERKUNG_A7, 0, ANMERKUNG_F7, ANMERKUNG_G7, 0, ANMERKUNG_E7, 0, ANMERKUNG_C7, ANMERKUNG_D7, ANMERKUNG_B6, 0, 0, ANMERKUNG_C7, 0, 0, ANMERKUNG_G6, 0, 0, ANMERKUNG_E6, 0, 0, ANMERKUNG_A6, 0, ANMERKUNG_B6, 0, ANMERKUNG_AS6, ANMERKUNG_A6, 0, ANMERKUNG_G6, ANMERKUNG_E7, ANMERKUNG_G7 , NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0}; // Notendauer:4 =Viertelnote, 8 =Achtelnote usw.:int noteDurations[] ={ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,}; lcd.setCursor(1, 0); lcd.print("Spielt jetzt..."); lcd.setCursor(0, 1); lcd.print ( "MARIO THEME SONG"); int size =sizeof(Melodie) / sizeof(int); for (int thisNote =0; thisNote  
Lied2Arduino
Code für das 2. Lied. Momentan ist der Mario Bros Underworld Song geladen.
//******************** SONG 2 NOTES HIER ************** **********////////////////////////////////////// //////////////////////////////////////////////// /////////////////////// VOLLSTÄNDIGE ANLEITUNG ZUM ERSTELLEN DER MARIO-SONGS FINDEN SIE HIER:///////////// ///////////////////// http://www.linuxcircle.com/2013/03/31/playing-mario-bros-tune-with-arduino-and -Piezo-Summer/ /////////////////////////////////////////// //////////////////////////////////////////////// ////////void Song2() { lcd.clear();// Noten in der Melodie:int Melodie[] ={ NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, ANMERKUNG_C5, ANMERKUNG_A3, ANMERKUNG_A4, ANMERKUNG_AS3, ANMERKUNG_AS4, 0, 0, ANMERKUNG_F3, ANMERKUNG_F4, ANMERKUNG_D3, ANMERKUNG_D4, ANMERKUNG_DS3, ANMERKUNG_DS4, 0, 0, ANMERKUNG_F3, ANMERKUNG_F4, ANMERKUNG_D3, ANMERKUNG_D4, ANMERKUNG_DS3, ANMERKUNG_DS4_, 0, 0, ANMERKUNG_DS4, 0, 0, ANMERKUNG_DS4, 0, 0, ANMERKUNG_DS4, ANMERKUNG_D4, ANMERKUNG_CS4, ANMERKUNG_DS4, ANMERKUNG_DS4, ANMERKUNG_GS3, ANMERKUNG_G3, ANMERKUNG_CS4, ANMERKUNG_C4, ANMERKUNG_FS4, ANMERKUNG_F4, ANMERKUNG_E3, ANMERKUNG_AS4, ANMERKUNG_A4, ANMERKUNG_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0}; // Notendauer:4 =Viertelnote, 8 =Achtelnote usw.:int noteDurations[] ={ 12, 12, 12, 12, 12 , 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12 , 6, 6, 18, 18, 18, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3 , 3}; lcd.setCursor(1, 0); lcd.print("Spielt jetzt..."); lcd.setCursor(0, 1); lcd.print ("MARIO UNDERWORLD"); int size =sizeof(Melodie) / sizeof(int); for (int thisNote =0; thisNote  
Lied3Arduino
Code für das dritte Lied. Momentan ist der Jeopardy Theme Song geladen.
//******************** SONG 3 NOTES HERE **************** **********void Song3() { lcd.clear(); // Noten in der Melodie:int melody[] ={ NOTE_C2, NOTE_F3, NOTE_C3, NOTE_A2, NOTE_A2, NOTE_C3, NOTE_F3, NOTE_C3, ANMERKUNG_C3, ANMERKUNG_F3, ANMERKUNG_C3, ANMERKUNG_F3, ANMERKUNG_AS3, ANMERKUNG_G3, ANMERKUNG_F3, ANMERKUNG_E3, ANMERKUNG_D3, ANMERKUNG_CS3, ANMERKUNG_C2, ANMERK_F3, ANMERKUNG_C3, ANMERKUNG_F2, ANMERK_A2, // Wiederholen Sie Zeile 1 und 2 ANMERKUNG_C3, ANMERKUNG_F3, ANMERKUNG_C3, ANMERKUNG .3, ANMERKUNG_F3_ ANMERKUNG_C3, , NOTE_E3, NOTE_D3, NOTE_CS3, NOTE_C3}; // Notendauer:4 =Viertelnote, 8 =Achtelnote usw.:int noteDurations[] ={ 4, 4, 4, 8, 8, 4, 4, 2, 4, 4, 4, 4, 3, 8, 8, 8, 8, 8, 4, 4, 4, 8, 8, // Zeile 1 und 2 wiederholen 4, 4, 2, 4, 8, 8, 4 , 4, 4, 4, 4, 4, 0}; lcd.setCursor(1, 0); lcd.print("Spielt jetzt..."); lcd.setCursor(0, 1); lcd.print("GEFAHR"); for (int thisNote =0; noteDurations[thisNote] !=0; thisNote++) { // Um ​​die Notendauer zu berechnen, nehmen Sie eine Sekunde // dividiert durch den Notentyp. //z.B. Viertelnote =1000/4, Achtelnote =1000/8 usw. int noteDuration =2000/noteDurations[thisNote]; Ton (8, Melodie [diese Note], NoteDuration * 0.9); // Um ​​die Noten zu unterscheiden, legen Sie eine Mindestzeit zwischen ihnen fest. // die Dauer der Notiz + 30% scheint gut zu funktionieren://int pauseBetweenNotes =noteDuration * 1.30; //verzögerung (pauseBetweenNotes); Verzögerung (AnmerkungDauer); }Lied3Titel(); } // Song3-Schleife beenden
Lied4Arduino
Code für das vierte Lied. Momentan ist eine kurze, generische Melodie geladen.
//******************** SONG 4 NOTES HERE ************** **********void Song4() { lcd.clear(); // Noten in der Melodie:int melody[] ={ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 }; // Notendauer:4 =Viertelnote, 8 =Achtelnote usw.:int noteDurations[] ={ 4, 8, 8, 4, 4, 4, 4, 4}; lcd.setCursor(1, 0); lcd.print("Spielt jetzt..."); lcd.setCursor(0, 1); lcd.print(" LIED 4 TITEL"); int thisNote =0; // um die Notendauer zu berechnen, nehmen Sie eine Sekunde // dividiert durch den Notentyp. //z.B. Viertelnote =1000 / 4, Achtelnote =1000/8 usw. for (int thisNote =0; thisNote <8; thisNote++) { // Um ​​die Notendauer zu berechnen, nehmen Sie eine Sekunde // dividiert durch den Notentyp. //z.B. Viertelnote =1000/4, Achtelnote =1000/8 usw. int noteDuration =1000 / noteDurations[thisNote]; Ton (8, Melodie [diese Anmerkung], Anmerkungsdauer); // Um ​​die Noten zu unterscheiden, legen Sie eine Mindestzeit zwischen ihnen fest. // die Dauer der Notiz + 30% scheint gut zu funktionieren:int pauseBetweenNotes =noteDuration * 1.30; Verzögerung (pauseBetweenNotes); kein Ton(8); // Stoppen Sie die Tonwiedergabe:} // end forSong4title(); } // Song4-Schleife beenden
Lied5Arduino
Code für das 5. Lied. Momentan ist eine kurze, generische Melodie geladen.
//******************** SONG 5 NOTES HERE ************** **********void Song5() { lcd.clear(); // Noten in der Melodie:int melody[] ={ NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 }; // Notendauer:4 =Viertelnote, 8 =Achtelnote usw.:int noteDurations[] ={ 4, 8, 8, 4, 4, 4, 4, 4}; lcd.setCursor(1, 0); lcd.print("Spielt jetzt..."); lcd.setCursor(0, 1); lcd.print(" LIED 5 TITEL"); int thisNote =0; // um die Notendauer zu berechnen, nehmen Sie eine Sekunde // dividiert durch den Notentyp. //z.B. Viertelnote =1000 / 4, Achtelnote =1000/8 usw. for (int thisNote =0; thisNote <8; thisNote++) { // Um ​​die Notendauer zu berechnen, nehmen Sie eine Sekunde // dividiert durch den Notentyp. //z.B. Viertelnote =1000/4, Achtelnote =1000/8 usw. int noteDuration =1000 / noteDurations[thisNote]; Ton (8, Melodie [diese Anmerkung], Anmerkungsdauer); // Um ​​die Noten zu unterscheiden, legen Sie eine Mindestzeit zwischen ihnen fest. // die Dauer der Notiz + 30% scheint gut zu funktionieren:int pauseBetweenNotes =noteDuration * 1.30; Verzögerung (pauseBetweenNotes); kein Ton(8); // Stoppe die Tonwiedergabe:} // end forSong5title(); } // Song5-Schleife beenden
Stellplätze.hArduino
Bibliothek mit Musiknoten für Lieder. Speichern Sie im selben Ordner wie Ihre anderen Keyboard-/Song-Skizzen.
//******************************** ****************//** MUSIKNOTEN DEFINIEREN//************************ *************************#HINWEIS_B0 definieren 31#HINWEIS_C1 definieren 33#HINWEIS_CS1 definieren 35#HINWEIS_D1 definieren 37#HINWEIS_DS1 definieren 39#HINWEIS_E1 definieren 41# Define NOTE_F1 44#Define NOTE_FS1 46#Define NOTE_G1 49#Define NOTE_GS1 52#Define NOTE_A1 55#Define NOTE_AS1 58#Define NOTE_B1 62#Define NOTE_C2 65#Define NOTE_CS2 69#Define NOTE_D2 73#Define NOTE_DS2 78#Define NOTE_E2 82#define 87#NOTE_FS2 definieren 93#NOTE_Define_G2 98#NOTE_GS2 definieren 104#NOTE_A2 definieren 110#NOTE_AS2 definieren 117#NOTE_B2 definieren 123#NOTE_C3 definieren 131#NOTE_CS3 definieren 139#NOTE_D3 definieren 147#NOTE_DS3 definieren 156#NOTE_Define_E3 definieren165# define NOTE_FS3 185#define NOTE_G3 196#define NOTE_GS3 208#define NOTE_A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311#define NOTE_E4 NOTEF4 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#6define NOTE_98 define 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_AS5_define 13 1480#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_FS7960#define NOTE# define NOTE_G7 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 4699#define NOTE_DS8 4978

Schaltpläne


Herstellungsprozess

  1. Erste Schritte mit TJBot
  2. Pflanzenalarm bei Durstalarm
  3. italienische Wordclock
  4. Arduino + LEDs + MIDI-Keyboard + MuseScore =Klavierlehrer
  5. Einfacher Hindernissensor mit Arduino
  6. Sigfox-kWh-Zähler
  7. Bluetooth-Temperaturüberwachung
  8. Mini-Stereo-Radio mit RDA5807
  9. Gestengesteuerte Sperre
  10. Messen Sie Ihre Reaktionszeit