Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Reproduza música com o controle remoto

Componentes e suprimentos

Arduino UNO
× 1
Controle remoto
× 1
Receptor IR (genérico)
× 1
Buzzer
× 1
Adafruit LCD padrão - 16x2 branco em azul
× 1
Potenciômetro rotativo (genérico)
× 1
Resistor 221 ohm
× 1

Aplicativos e serviços online

Arduino IDE

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

  1. Usando remoto infravermelho com Raspberry Pi sem LIRC
  2. Jogo Arduino Gyroscope com MPU-6050
  3. Câmera de segurança Discord com ESP32
  4. Dados digitais Arduino
  5. DIY 37 LED Roulette Game
  6. Controle remoto de TV a bateria com caixa impressa em 3D
  7. Conheça a temperatura de sua casa de qualquer lugar com a nuvem Arduino!
  8. ATtiny85 Mini Arcade:Snake
  9. Detector de alcance portátil
  10. Controle o seu LED com a Cortana