Conviértete en un Experto de Arduino
Te invito a mi Curso de Arduino desde cero, el cual incluye:
– +15 proyectos prácticos
– Lecciones teóricas de los componentes
– Creación de código para Arduino
– 13 horas de video
– El Curso más completo en Español
Acerca del proyecto
En esta publicación, aprenderemos a crear un proyecto en Arduino, con el que podremos reproducir cualquier canción en Arduino, ya sea la Marcha Imperial, La Leyenda de Zelda, Star Wars, o cualquier otra canción que te imagines.
¿Sabes qué es lo mejor de este proyecto? Que es tan fácil y rápido de implementar, que una vez que sepas el procedimiento, y tengas montado el proyecto, podrás tocar cualquier canción en tu Arduino en menos de 2 minutos.
Contents
- 1 Conviértete en un Experto de Arduino
- 2 Acerca del proyecto
- 3 Componentes para crear un proyecto que reproduzca canciones en Arduino
- 4 Diagrama de conexión para crear un proyecto que reproduzca cualquier canción con Arduino
- 5 ¿Cómo buscar la canción que quieras reproducir en tu Arduino?
- 6 ¿Cómo convierto una canción a código de Arduino?
- 7 Código fuente para hacer funcionar el reproductor de música con Arduino
- 8 Video para reproducir cualquier canción en Arduino
Componentes para crear un proyecto que reproduzca canciones en Arduino
La lista de componentes es muy sencilla. Te los enlisto a continuación:
Lista de Componentes |
---|
1 x Protoboard |
1 x Arduino Uno |
1 x Buzzer ó Bocina |
1 x Push Button |
Jumpers |
Diagrama de conexión para crear un proyecto que reproduzca cualquier canción con Arduino
El diagrama de conexión del proyecto es muy básico, sólo hay que conectar la bocina en su polo negativo al pin GND del Arduino, y su polo positivo al pin # 8.
De igual forma, conectaremos la pata izquierda del Push Button al pin # 9 de Arduino, y la otra pata al pin GND del Arduino. Aquí te lo muestro de forma detallada.
¿Cómo buscar la canción que quieras reproducir en tu Arduino?
Este proyecto requiere el uso de una página web, que nos permitirá, trabajar con las bondades de un archivo musical con su extensión .mid ó .midi.
Básicamente, la idea, es generar las llamadas al método tone() que forman parte del Arduino, de una forma automatizada, utilizando como entrada un archivo midi.
Para llevar a cabo la búsqueda de tu canción, puedes ingresar a tu buscador favorito, y realizar la búsqueda de la canción, utilizando la palabra midi. Por ejemplo, si queremos buscar una canción de la leyenda de Zelda, buscaremos:
Exploraremos los resultados, y vamos a bajar la canción que necesitemos, en mi caso, descargaré la siguiente:
¿Cómo convierto una canción a código de Arduino?
Esta es la parte más emocionante, ya que será donde convertiremos la canción midi, en tonos de Arduino. Para esta tarea, utilizaremos una página, que nos permitirá llevar a cabo esta tarea, de una forma automatizada.
El Sitio de ExtraMaster, nos permite convertir nuestra canción de una forma sencilla.
Simplemente, ingresaremos la canción que hemos descargado, en la herramienta, y daremos click en Submit.
Esto nos llevará a la siguiente ventana, donde podremos seleccionar la pista de Audio que queramos extraer.
Te explico, un archivo midi, se compone de diferentes pistas, cada una de ellas, representa un instrumento musical. Regularmente, una de las pistas, es la que lleva la melodía de la canción.
Por default, la herramienta nos preselecciona, la pista más compleja, que regularmente, es la melodía de la canción. Vamos a dejar la pista preseleccionada.
Más abajo, podremos cambiar las opciones, tanto para la velocidad del código resultante, así como para especificar, cuán grandes queremos los cambios entre las notas musicales. En mi caso, dejaré la configuración por default, pero puedes jugar con ellos, hasta que obtengas los resultados deseados.
Por último, en la parte final de la página, tenemos la opción para seleccionar el dispositivo, y biblioteca utilizada por el mismo.
En nuestro caso, como ocuparemos la función tone, vamos a asegurarnos de seleccionar dicha opción, y demos click en “convert Midi to Arduino”
Esto nos genera un código fuente de Arduino. Volveremos a él, en la siguiente sección.
Código fuente para hacer funcionar el reproductor de música con Arduino
En el IDE de Arduino, crearemos un nuevo archivo, y vamos a especificar los pines a los que se encuentran conectados, nuestra bocina, y nuestro Push Button.
De igual forma, vamos a configurar dichos pines, para que el del Push Button, utilice la resistencia interna, gracias a INPUT_PULLUP, y el pin de la bocina, utilice el modo OUTPUT.
Dentro del método loop, vamos a comprobar si se ha presionado el Push button, y en dado caso de que así sea, invocaremos una función llamada “PlayMusic”, la cual aún definiremos.
Después de la comprobación de la señal del Push Button, llamaremos a la función “noTone”, con el fin de detener cualquier tipo de sonido de la bocina.
El código entonces, queda de la siguiente manera.
int tonePin = 8; int MUSIC_BUTTON = 9; void setup() { pinMode(MUSIC_BUTTON, INPUT_PULLUP); pinMode(tonePin, OUTPUT); } void loop() { if(digitalRead(MUSIC_BUTTON) == LOW) { PlayMusic(); } noTone(tonePin); }
El siguiente paso, es agregar la serie de tonos que nos ha generado la herramienta. Para ello, vamos a copiar, únicamente la función llamada “midi”, y vamos a pegarla, hasta el final del archivo del sketch. Posteriormente, renombraremos la función, de “midi”, a “PlayMusic”, de la siguiente forma.
Ya casi estamos listos. Si validamos el código, seguramente te va a salir este error.
Este mensaje sale, porque hemos declarado la variable como “PIEZO”, y el código generado, está utilizando el nombre de variable “tonePin”.
La solución, es renombrar la variable, y realizar los cambios, de todas las referencias, de TONE, a “tonePin”.
Con este cambio, tendremos una compilación satisfactoria, y ya podremos subir el sketch a la placa, para probar los resultados. El código del Sketch, queda así (He quitado las llamadas a tone, para no hacer tan largo el sketch):
int tonePin = 8; int MUSIC_BUTTON = 9; void setup() { pinMode(MUSIC_BUTTON, INPUT_PULLUP); pinMode(tonePin, OUTPUT); } void loop() { if(digitalRead(MUSIC_BUTTON) == LOW) { PlayMusic(); } noTone(tonePin); } void PlayMusic() { //aquí va tu código }
Video para reproducir cualquier canción en Arduino
Si quieres ver la guía paso a paso, de la creación de este proyecto, puedes verlo a continuación: