Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controla la Reproducción de Música con tu Mando a Distancia: Un Proyecto Simple con Arduino

Componentes y Suministros

Aplicaciones y Servicios Online

Sobre este Proyecto

¡Hola comunidad de Hackster! Soy Simone Adobs y este es mi segundo proyecto publicado en este sitio.

La Lógica del Proyecto

El funcionamiento es muy sencillo:

Explicación del Código

Este es un ejemplo de melodía, todas las melodías están escritas de esta forma:

void melody_example() { 
  lcd.clear(); 
  lcd.setCursor(0,0); 
  lcd.print("Título de la canción"); 
  delay(1000); 
  lcd.clear(); 
  nota_mi(duracion,pausa); //nota musical
  nota_do(duracion,pausa); //nota musical
  lcd.clear(); 
  delay(100); 
  Reset_AVR(); //Este comando reinicia el Arduino sin pulsar ningún botón 
}

Para usar el comando "Reset_AVR()", debes incluir este código al principio del sketch:

#include <avr/io.h> 
#include <avr/wdt.h> 
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

Así es como Arduino entiende qué melodía debe reproducirse:

if (result==12495) { //12495 es el código que mi mando envía al pulsar el botón 1
  melody_1(); 
} else if (result==6375) { //6375 es el código del botón 2
  melody_2(); 
} else if (result==31365) { //31365 es el código del botón 3
  melody_3(); 
} else if (result==4335) { //4335 es el código del botón 4
  melody_4(); 
}

Esta es la función para reproducir una nota individual:

void nota_ejemplo(int duracion, int pausa) { 
  shut(); //Llama a una función que explicaré abajo
  lcd.setCursor(0, 0); 
  lcd.print("Ejemplo "); //Imprime el nombre de la nota musical
  NewTone(11,262,duracion); //11->Pin del zumbador - 262->código de la nota
  delay(pausa); //espera algunos milisegundos
}

¿Quieres detener la melodía mientras se reproduce?

No hay problema, gracias a la función "shut()" puedes detener la melodía en cualquier momento.

Esta es la función "shut()":

void shut() { 
  if (irrecv.decode(&results)) { //Recibe el código del botón pulsado
    result=results.value, HEX; //Guarda el código recibido
    Serial.println(result); 
    if (result==-23971) { //-23971 en mi mando representa el botón de apagado
      Reset_AVR(); //Reinicia Arduino
    }
  }
  irrecv.resume(); //Permite a Arduino recibir un nuevo código del mando
}

Espero que os guste este proyecto y, si es así, echad un vistazo a mi proyecto anterior.

¡Que tengáis un buen día!

Simone desde Italia <3

Código

Reproducir Melodía (C/C++)

Copia este código en el Arduino IDE:

#include <LiquidCrystal.h> 
#include <IRremote.h> 
#include <NewTone.h> 
#include <avr/io.h> 
#include <avr/wdt.h> 
#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("-----Elige-----"); 
  lcd.setCursor(0,1); 
  lcd.print("----Una Canción!!----"); 
  pinMode(buzzer, OUTPUT); 
  irrecv.enableIRIn(); 
} 

void loop() { 
  if (irrecv.decode(&results)) { 
    result=results.value, HEX; 
    Serial.println(result); 
    if (result==12495) { ode(); } 
    else if (result==6375) { london(); } 
    else if (result==31365) { fur(); } 
    else if (result==4335) { pirate(); } 
    irrecv.resume(); 
  } 
  delay(100); 
}

// Funciones para las melodías: Fur Elise, London Bridge, Ode to Joy, He's a Pirate
// ... (código completo disponible en el proyecto original)

void shut() { 
  if (irrecv.decode(&results)) { 
    result=results.value, HEX; 
    Serial.println(result); 
    if (result==-23971) { Reset_AVR(); } 
  } 
  irrecv.resume(); 
}

// Funciones para cada nota musical (Do, Do#, Re, Re#, Mi, Fa, Fa#, Sol, Sol#, La, La#, Si)
void nota_do(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Do "); NewTone(11,262,duracion); delay(pausa); }
void nota_doz(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Do # "); NewTone(11,277,duracion); delay(pausa); }
void nota_re(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Re "); NewTone(11,294,duracion); delay(pausa); }
void nota_rez(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Re # "); NewTone(11,311,duracion); delay(pausa); }
void nota_mi(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Mi "); NewTone(11,330,duracion); delay(pausa); }
void nota_fa(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Fa "); NewTone(11,349,duracion); delay(pausa); }
void nota_faz(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Fa # "); NewTone(11,370,duracion); delay(pausa); }
void nota_sol(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Sol "); NewTone(11,392,duracion); delay(pausa); }
void nota_solz(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Sol # "); NewTone(11,415,duracion); delay(pausa); }
void nota_la(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("La "); NewTone(11,440,duracion); delay(pausa); }
void nota_laz(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("La # "); NewTone(11,466,duracion); delay(pausa); }
void nota_si(int duracion, int pausa) { shut(); lcd.setCursor(0, 0); lcd.print("Si "); NewTone(11,494,duracion); delay(pausa); }

Esquemáticos

Diagrama de conexiones disponible en el proyecto original (archivo .fzz y imagen PNG).

Proceso de manufactura

  1. Capturar comandos de mando IR en Raspberry Pi sin LIRC: enfoque Python UART
  2. Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
  3. Cámara de Seguridad con Detección de Movimiento ESP32 para Discord
  4. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  5. Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
  6. Mando a Distancia TV Personalizado con Arduino UNO: Alimentado por Batería, Carcasa Impresa en 3D
  7. Monitoriza la Temperatura de tu Hogar desde Cualquier Lugar con Integración Arduino Cloud
  8. ATtiny85 Mini Arcade: Snake – Construye una Consola Portátil OLED
  9. Detector de Rango Portátil – Kit DIY Arduino Nano con HC-SR04, Batería 18650 y Carcasa Impresa en 3D
  10. Controlar un LED de Arduino con Cortana vía Bluetooth en Windows 10
  11. Robot pinza controlado remotamente para manipulación de precisión