Jouer de la musique avec votre télécommande
Composants et fournitures
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Applications et services en ligne
![]() |
|
À propos de ce projet
Bonjour la communauté Hackster !
Je suis Simone Adobs et c'est mon deuxième projet que je publie sur ce site.
La logique de ce projet est très simple :
- Prenez votre télécommande et sélectionnez la mélodie que vous souhaitez jouer ;
- Arduino avec le buzzer jouera la mélodie ;
- Sur l'écran LCD, vous pouvez voir la note musicale jouée.
Quelques explications de code :
Ceci est un exemple de mélodie, toutes les mélodies sont écrites de cette manière :
void melody_example() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Titre de la chanson"); retard(1000); lcd.clear(); nota_mi(durée,pause); //note de musique nota_do(duration,pause); //note de musique lcd.clear(); retard (100); Reset_AVR(); //Cette commande est utilisée pour réinitialiser l'Arduino sans appuyer sur aucun bouton}
Pour utiliser la commande "Reset_AVR()", vous devez mettre ce code en haut du croquis :
#include #include #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}
Voici comment Arduino comprend quelle mélodie doit être jouée :
if (result==12495) { //12495 est le code que ma télécommande envoie lorsque vous appuyez sur le bouton 1 melody_1(); } else if (result==6375) { //6375 est le code du bouton 2 melody_2(); } else if (result==31365) { //31365 est le code du bouton 3 melody_3(); } else if (result==4335) { //4335 est le code du bouton 4 melody_4(); } }
void nota_example(int duration, int pause) { close(); //Cette commande appelle une fonction que je vais expliquer vers le bas lcd.setCursor(0, 0); lcd.print("Exemple "); //Imprime le nom de la note musicale NewTone(11,262,duration); //11->Buzzer Pin - 262->Retard de code de note (pause); //attendre quelques millisecondes}
Voulez-vous arrêter la mélodie lorsqu'elle joue ?
Pas de problème, grâce à la fonction "shut()" vous pouvez arrêter la mélodie à tout moment.
C'est la fonction "fermer()" :
void shutdown() { if (irrecv.decode(&results)) { //Recevoir le code du bouton appuyé result=results.value, HEX; //Enregistrer le code reçu Serial.println(result); if (result==-23971) { //-23971 sur ma télécommande représente le bouton d'arrêt Reset_AVR(); //Réinitialiser Arduino } } irrecv.resume(); //Permet à Arduino de recevoir un nouveau code de Remote}
J'espère que vous aimerez ce projet et si c'est le cas, essayez de jeter un œil à mon projet précédent.
Bonne journée..
Simone d'Italie <3
Code
- Jouer la mélodie
Jouer MélodieC/C++
Copiez ce code dans Arduino IDE#include#include #include #include #include #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {} #define buzzer 11 LiquidCrystal lcd(9, 8, 7, 6, 5, 4);int result;int RECV_PIN=2;IRrecv irrecv(RECV_PIN);decode_results results; void setup() { Serial.begin(9600); lcd.begin (16,2); lcd.setCursor(0,0); lcd.print("-----Choisissez-----"); lcd.setCursor(0,1) ; lcd.print("----Une chanson!!----"); pinMode(buzzer, SORTIE); irrecv.enableIRIn();} void loop() { if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(résultat); if (résultat==12495) { ode(); } else if (résultat==6375) { london(); } else if (résultat==31365) { fur(); } else if (résultat==4335) { pirate(); } irrecv.resume(); } delay(100);} void fur() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Fourrure Elise"); retard(1000); lcd.clear(); nota_mi(150 200); nota_rez(150 200); nota_mi(150 200); nota_rez(150 200); nota_mi(150 200); nota_si(150 200); nota_rez(150 200); nota_do(150,200); nota_la(450 300); nota_do(150,200); nota_mi(150 200); nota_la(150,200); nota_si(450 300); nota_mi(150 200); nota_solz(150 200); nota_si(150 200); nota_do (450 300); nota_mi(150 200); nota_mi(150 200); nota_rez(150 200); nota_mi(150 200); nota_rez(150 200); nota_mi(150 200); nota_si(150 200); nota_rez(150 200); nota_do(150,200); nota_la(450 300); nota_do(150,200); nota_mi(150 200); nota_la(150,200); nota_sol(450 300); nota_mi(150 200); nota_do(150,200); nota_si(150 200); nota_la(600,800); nota_mi(150 200); nota_rez(150 200); nota_mi(150 200); nota_rez(150 200); nota_mi(150 200); nota_si(150 200); nota_rez(150 200); nota_do(150,200); nota_la(450 300); nota_do(150,200); nota_mi(150 200); nota_la(150,200); nota_si(450 300); nota_mi(150 200); nota_solz(150 200); nota_si(150 200); nota_do (450 300); lcd.clear(); retard (100); Reset_AVR();}void london() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Pont de Londres"); lcd.setCursor(0,1) ; lcd.print("Est en train de tomber"); retard(1000); lcd.clear(); nota_sol(450 600); nota_la(150,200); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_re(300,400); nota_mi(300,400); nota_fa(600,800); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_sol(450 600); nota_la(150,200); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(600,800); nota_re(600,800); nota_sol(600,800); nota_mi(300,400); nota_do (450 600); lcd.clear(); retard (100); Reset_AVR();}void ode() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Hymne à la joie"); retard(1000); lcd.clear(); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_mi(450 600); nota_re(150 200); nota_re(600,800); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_re(450 600); nota_do(150,200); nota_do(600,800); nota_re(300,400); nota_re(300,400); nota_mi(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150 200); nota_fa(150 200); nota_mi(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150 200); nota_fa(150 200); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_re(300,400); nota_sol(600,800); nota_mi(300,400); nota_mi(300,400); nota_fa(300,400); nota_sol(300,400); nota_sol(300,400); nota_fa(300,400); nota_mi(300,400); nota_re(300,400); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(300,400); nota_re(450 600); nota_do(150,200); nota_do(600,800); lcd.clear(); retard (100); Reset_AVR();}void pirate() { lcd.clear(); lcd.setCursor(0,0); lcd.print("C'est un pirate"); retard(1000); lcd.clear(); nota_mi(150 200); nota_sol(150 200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_si(150 200); nota_do(300,400); nota_do(300,400); nota_do(150,200); nota_re(150 200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150 200); nota_sol(150 200); nota_la(450 600); nota_mi(150 200); nota_sol(150 200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_si(150 200); nota_do(300,400); nota_do(300,400); nota_do(150,200); nota_re(150 200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150 200); nota_la(300,400); retard (400); nota_mi(150 200); nota_sol(150 200); nota_la(300,400); nota_la(300,400); nota_la(150,200); nota_do(150,200); nota_re(300,400); nota_re(300,400); nota_re(150 200); nota_mi(150 200); nota_fa(300,400); nota_fa(300,400); nota_mi(150 200); nota_re(150 200); nota_mi(150 200); nota_la(450 600); nota_la(150,200); nota_si(150 200); nota_do(300,400); nota_do(300,400); nota_re(300,400); nota_mi(150 200); nota_la(450 600); nota_la(150,200); nota_do(150,200); nota_si(300,400); nota_si(300,400); nota_do(150,200); nota_la(150,200); nota_si(900,1200); nota_si(300,400); nota_si(300,400); nota_do(150,200); nota_la(150,200); nota_si(900,1200); nota_si(300,400); nota_si(300,400); nota_la(150,200); nota_sol(150 200); nota_la(600,800); lcd.clear(); retard (100); Reset_AVR();}void shutdown() { if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(résultat); if (résultat==-23971) { Reset_AVR(); } } irrecv.resume();}void nota_do(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Faire "); NewTone (11 262, durée); //DO delay(pause); }void nota_doz(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Faire # "); NewTone (11 277, durée); //DO delay(pause); }void nota_re(int durée, int pause) { fermé; lcd.setCursor(0, 0); lcd.print("Re "); NewTone (11 294, durée); //RE retard (pause); }void nota_rez(int durée, int pause) { fermé ; lcd.setCursor(0, 0); lcd.print("Re # "); NewTone (11 311, durée); //RE retard (pause); }void nota_mi(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Mi "); NewTone (11 330, durée); //MI retard (pause); }void nota_fa(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Fa "); NewTone (11 349, durée); //FA retard (pause); }void nota_faz(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Fa # "); NewTone (11 370, durée); //FA retard (pause); }void nota_sol(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Sol "); NewTone (11 392, durée); //Délai SOL (pause); }void nota_solz(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Sol # "); NewTone (11 415, durée); //Délai SOL (pause); }void nota_la(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("La "); NewTone (11 440, durée); //LA retard (pause); } void nota_laz(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("La # "); NewTone (11 466, durée); //LA retard (pause); }void nota_si(int durée, int pause) { fermé(); lcd.setCursor(0, 0); lcd.print("Si "); NewTone (11 494, durée); //Délai SI(pause); }
Schémas
canzoni_con_tastiera_fQS3978roa.fzz
Processus de fabrication
- Utilisation de la télécommande infrarouge avec Raspberry Pi sans LIRC
- Jeu de gyroscope Arduino avec MPU-6050
- Caméra de sécurité Discord avec ESP32
- Dés numériques Arduino
- Jeu de roulette DIY 37 LED
- Télécommande TV alimentée par batterie avec boîtier imprimé en 3D
- Connaître la température de votre maison depuis n'importe où avec Arduino Cloud !
- Mini arcade ATtiny85 :Serpent
- Détecteur de portée portable