Speel muziek af met je afstandsbediening
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Apps en online services
|
Over dit project
Hallo Hackster-gemeenschap!
Ik ben Simone Adobs en dit is mijn tweede project dat ik op deze site heb uitgebracht.
De logica van dit project is heel eenvoudig:
- Pak je afstandsbediening en selecteer de melodie die je wilt spelen;
- Arduino met de zoemer speelt de melodie;
- Op het LCD-scherm kun je de gespeelde muzieknoot zien.
Wat uitleg over de code:
Dit is een voorbeeld van een melodie, alle melodieën zijn op deze manier geschreven:
void melody_example() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Songtitel"); vertraging (1000); lcd.wissen(); nota_mi(duur,pauze); // muzieknoot nota_do (duur, pauze); //muzieknoot lcd.clear(); vertraging (100); Reset_AVR(); //Deze opdracht wordt gebruikt om de Arduino te resetten zonder op een knop te drukken}
Om de opdracht "Reset_AVR()" te gebruiken, moet u deze code bovenaan de schets plaatsen:
#include #include #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}
Zo begrijpt Arduino welke melodie gespeeld moet worden:
if (result==12495) { //12495 is de code die mijn Remote verzendt wanneer je op knop 1 drukt melody_1(); } else if (result==6375) { //6375 is de code van knop 2 melody_2(); } else if (result==31365) { //31365 is de code van knop 3 melody_3(); } else if (result==4335) { //4335 is de code van knop 4 melody_4(); } }
void nota_example(int duur, int pauze) { shut(); // Deze opdracht roept een functie aan die ik zal uitleggen lcd.setCursor (0, 0); lcd.print("Voorbeeld"); // Druk de muzieknootnaam af NewTone (11,262, duur); //11->Buzzer Pin - 262->noteer codevertraging (pauze); //wacht enkele milliseconden}
Wilt u de melodie stoppen wanneer deze wordt afgespeeld?
Geen probleem, dankzij de "shut()"-functie kun je de melodie stoppen wanneer je maar wilt.
Dit is "shut()" Functie:
void shut() { if (irrecv.decode(&results)) { //Ontvang de code van de ingedrukte knop result=results.value, HEX; // Bewaar de ontvangen code Serial.println (resultaat); if (result==-23971) {//-23971 op mijn afstandsbediening vertegenwoordigen de afsluitknop Reset_AVR(); //Reset Arduino } } onrev.resume(); //Hiermee kan Arduino een nieuwe code ontvangen van Remote}
Ik hoop dat je dit project leuk vindt en als dat zo is, kijk dan eens naar mijn vorige project.
Een fijne dag verder..
Simone uit Italië <3
Code
- Speel melodie af
Speel MelodyC/C++
Kopieer deze code in 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 resultaten; void setup() { Serial.begin(9600); lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("-----Kies-----"); lcd.setCursor(0,1); lcd.print("----Een nummer!!----"); pinMode (zoemer, UITGANG); irrecv.enableIRIn();} void loop() {if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(resultaat); if (resultaat==12495) { ode(); } else if (result==6375) { londen(); } else if (result==31365) { fur(); } else if (result==4335) { pirate(); } onrev.resume(); } vertraging(100);} void fur() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Fur Elise"); vertraging (1000); lcd.wissen(); 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.wissen(); vertraging (100); Reset_AVR();}void london() { lcd.clear(); lcd.setCursor(0,0); lcd.print("London Bridge"); lcd.setCursor(0,1); lcd.print("Valt naar beneden"); vertraging (1000); lcd.wissen(); 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.wissen(); vertraging (100); Reset_AVR();}void ode() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Ode aan de Vreugde"); vertraging (1000); lcd.wissen(); 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.wissen(); vertraging (100); Reset_AVR();}void pirate() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Hij is een piraat"); vertraging (1000); lcd.wissen(); 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); vertraging (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.wissen(); vertraging (100); Reset_AVR();}void shut() { if (irrecv.decode(&results)) { result=results.value, HEX; Serial.println(resultaat); if (resultaat==-23971) { Reset_AVR(); } } irrecv.resume();}void nota_do(int duration, int pause) { shut(); lcd.setCursor(0, 0); lcd.print("Doe "); NewTone (11,262, duur); // DO vertraging (pauze); }void nota_doz(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("Doe # "); NewTone(11,277,duur); // DO vertraging (pauze); }void nota_re(int duur, int pauze) { gesloten; lcd.setCursor(0, 0); lcd.print("Re "); NewTone(11,294,duur); //RE vertraging (pauze); }void nota_rez(int duur, int pauze) { gesloten; lcd.setCursor(0, 0); lcd.print("Re # "); NewTone(11,311,duur); //RE vertraging (pauze); }void nota_mi(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("Mi "); NewTone(11.330,duur); //MI vertraging (pauze); }void nota_fa(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("Fa "); NewTone(11,349,duur); //FA vertraging (pauze); }void nota_faz(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("Fa # "); NewTone(11.370,duur); //FA vertraging (pauze); }void nota_sol(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("Sol"); NewTone (11,392, duur); //SOL vertraging (pauze); }void nota_solz(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("Sol # "); NewTone(11,415,duur); //SOL vertraging (pauze); }void nota_la(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("La "); NewTone(11.440,duur); // LA vertraging (pauze); } void nota_laz(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("La # "); NewTone(11,466,duur); // LA vertraging (pauze); }void nota_si(int duur, int pauze) { shut(); lcd.setCursor(0, 0); lcd.print("Si "); NewTone(11,494,duur); //SI vertraging (pauze); }
Schema's
canzoni_con_tastiera_fQS3978roa.fzzProductieproces
- IR-afstandsbediening gebruiken met Raspberry Pi zonder LIRC
- Arduino-gyroscoopspel met MPU-6050
- Discord Beveiligingscamera met een ESP32
- Arduino digitale dobbelstenen
- DIY 37 LED Roulette Game
- Tv-afstandsbediening op batterijen met 3D-geprint hoesje
- Ken de temperatuur van uw huis overal met Arduino Cloud!
- ATtiny85 Mini Arcade:Snake
- Draagbare afstandsdetector
- Bedien uw led met Cortana
- Grijperbot met afstandsbediening