Reproduza música com o controle remoto
Componentes e suprimentos
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Aplicativos e serviços online
![]() |
|
Sobre este projeto
Olá, comunidade Hackster!
Sou Simone Adobs e este é o meu segundo projeto que lancei neste site.
A lógica deste projeto é muito simples:
- Pegue seu controle remoto e selecione a melodia que deseja tocar;
- Arduino com o Buzzer tocará a melodia;
- Na tela LCD você pode ver a nota musical tocada.
Alguma explicação do código:
Este é um exemplo de melodia, todas as melodias são escritas desta forma:
void melody_example () {lcd.clear (); lcd.setCursor (0,0); lcd.print ("Título da música"); atraso (1000); lcd.clear (); nota_mi (duração, pausa); // nota musical nota_do (duração, pausa); // nota musical lcd.clear (); atraso (100); Reset_AVR (); // Este comando é usado para reiniciar o Arduino sem apertar nenhum botão}
Para usar o comando "Reset_AVR ()", você deve colocar este código no topo do esboço:
#include #include #define Reset_AVR () wdt_enable (WDTO_30MS); enquanto (1) {}
É assim que o Arduino entende qual melodia deve ser tocada:
if (result ==12495) {// 12495 é o código que meu Remoto envia quando você pressiona o botão 1 melody_1 (); } else if (result ==6375) {// 6375 é o código do botão 2 melody_2 (); } else if (result ==31365) {// 31365 é o código do botão 3 melody_3 (); } else if (result ==4335) {// 4335 é o código do botão 4 melody_4 (); }}
void nota_example (duração interna, pausa interna) {fechar (); // Este comando chama uma função que explicarei abaixo lcd.setCursor (0, 0); lcd.print ("Exemplo"); // Imprime o nome da nota musical NewTone (11,262, duração); // 11-> Buzzer Pin - 262-> atraso de código de nota (pausa); // aguarde alguns milissegundos}
Quer parar a melodia quando ela estiver tocando?
Não tem problema, graças à função "shut ()" você pode interromper a melodia sempre que quiser.
Esta é a função "shut ()":
void shut () {if (irrecv.decode (&results)) {// Recebe o código do botão pressionado result =results.value, HEX; // Salva o código recebido Serial.println (resultado); if (resultado ==- 23971) {// - 23971 no meu controle remoto representa o botão de desligamento Reset_AVR (); // Reinicialize o Arduino}} irrecv.resume (); // Permite que o Arduino receba um novo código do Remote}
Espero que gostem deste projeto e se for, tente dar uma olhada no meu projeto anterior.
Tenha um bom dia ..
Simone da Itália <3
Código
- Toque melodia
Tocar melodia C / C ++
Copie este código no IDE do Arduino#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); resultado int; RECV_PIN int =2; IRrecv irrecv (RECV_PIN); resultados decode_results; void setup () {Serial.begin (9600); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("----- Escolha -----"); lcd.setCursor (0,1); lcd.print ("---- Uma música !! ----"); pinMode (campainha, OUTPUT); irrecv.enableIRIn ();} void loop () {if (irrecv.decode (&results)) {result =results.value, HEX; Serial.println (resultado); if (resultado ==12495) {ode (); } else if (resultado ==6375) {london (); } else if (result ==31365) {fur (); } else if (result ==4335) {pirate (); } irrecv.resume (); } atraso (100);} pele vazia () {lcd.clear (); lcd.setCursor (0,0); lcd.print ("Fur Elise"); atraso (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 (); atraso (100); Reset_AVR ();} void london () {lcd.clear (); lcd.setCursor (0,0); lcd.print ("London Bridge"); lcd.setCursor (0,1); lcd.print ("Está caindo"); atraso (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 (); atraso (100); Reset_AVR ();} void ode () {lcd.clear (); lcd.setCursor (0,0); lcd.print ("Ode to Joy"); atraso (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 (); atraso (100); Reset_AVR ();} void pirate () {lcd.clear (); lcd.setCursor (0,0); lcd.print ("Ele é um pirata"); atraso (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); atraso (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 (); atraso (100); Reset_AVR ();} void shut () {if (irrecv.decode (&results)) {result =results.value, HEX; Serial.println (resultado); if (resultado ==- 23971) {Reset_AVR (); }} irrecv.resume ();} void nota_do (duração int, pausa interna) {shut (); lcd.setCursor (0, 0); lcd.print ("Do"); NewTone (11.262, duração); // DO delay (pausa); } void nota_doz (duração int, pausa interna) {shut (); lcd.setCursor (0, 0); lcd.print ("Do #"); NewTone (11.277, duração); // DO delay (pausa); } void nota_re (duração interna, pausa interna) {fechar; lcd.setCursor (0, 0); lcd.print ("Re"); NewTone (11.294, duração); // Atraso RE (pausa); } void nota_rez (duração interna, pausa interna) {fechar; lcd.setCursor (0, 0); lcd.print ("Re #"); NewTone (11.311, duração); // Atraso RE (pausa); } void nota_mi (duração int, pausa interna) {shut (); lcd.setCursor (0, 0); lcd.print ("Mi"); NewTone (11.330, duração); // Atraso MI (pausa); } void nota_fa (duração int, pausa interna) {shut (); lcd.setCursor (0, 0); lcd.print ("Fa"); NewTone (11.349, duração); // Atraso FA (pausa); } void nota_faz (duração int, pausa interna) {shut (); lcd.setCursor (0, 0); lcd.print ("Fa #"); NewTone (11.370, duração); // Atraso FA (pausa); } void nota_sol (duração interna, pausa interna) {fechar (); lcd.setCursor (0, 0); lcd.print ("Sol"); NewTone (11.392, duração); // Atraso SOL (pausa); } void nota_solz (duração interna, pausa interna) {fechar (); lcd.setCursor (0, 0); lcd.print ("Sol #"); NewTone (11.415, duração); // Atraso SOL (pausa); } void nota_la (duração int, pausa interna) {shut (); lcd.setCursor (0, 0); lcd.print ("La"); NewTone (11.440, duração); // Atraso LA (pausa); } void nota_laz (duração int, pausa interna) {shut (); lcd.setCursor (0, 0); lcd.print ("La #"); NewTone (11.466, duração); // Atraso LA (pausa); } void nota_si (duração interna, pausa interna) {fechar (); lcd.setCursor (0, 0); lcd.print ("Si"); NewTone (11.494, duração); // Atraso SI (pausa); }
Esquemas
canzoni_con_tastiera_fQS3978roa.fzz
Processo de manufatura
- Usando remoto infravermelho com Raspberry Pi sem LIRC
- Jogo Arduino Gyroscope com MPU-6050
- Câmera de segurança Discord com ESP32
- Dados digitais Arduino
- DIY 37 LED Roulette Game
- Controle remoto de TV a bateria com caixa impressa em 3D
- Conheça a temperatura de sua casa de qualquer lugar com a nuvem Arduino!
- ATtiny85 Mini Arcade:Snake
- Detector de alcance portátil
- Controle o seu LED com a Cortana