Microprocesadores y Microcontroladores - A
Notas musicales con Arduino
En esta clase vamos a implementar un sistema de sonidos con Arduino, para ello
utilizaremos un Buzzer o zumbador, el cual es un componente activo –output digital-,
que estará a la espera de recibir las instrucciones necesarias para convertirlas en
melodías digitales.
Buzzer (Piezo)
En primer lugar, es necesario conocer que un zumbador es un transductor
electroacústico (con material piezoeléctrico) capaz de crear un sonido o zumbido,
continuo o intermitente, de un mismo tono. En su interior está formado por un
electroimán y una lámina metálica de acero. Al ser accionado, la corriente atravesará
la bobina del electroimán y producirá un campo magnético variable que hará vibrar la
lámina de acero sobre la armadura.
Estructura del Buzzer
Los materiales piezoeléctricos (cuarzo, turmalina…) tienen la propiedad especial de
variar su volumen al ser atravesados por corrientes eléctricas (en este caso, serán las
señales digitales que le mandemos desde la placa de Arduino UNO), y recuperar su
“Formando líderes para la construcción de un nuevo país en paz”
Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 1
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 [Link]
estado inicial al cesar dicha corriente. La calidad del sonido producido es reducida, sin
embargo, los zumbadores son componentes con alta durabilidad y bajo consumo
eléctrico.
Fenómeno eléctrico en materiales piezoeléctricos
Funciones para manejo de sonidos con buzzer
Arduino dispone de dos funciones que nos permiten generar fácilmente señales
eléctricas para convertir en sonido, usando cualquiera de las salidas digitales
disponibles.
Estas funciones son tone() y noTone() y, como su nombre indican, permiten generar o
detener la señal del tono en un pin.
Funciones para generar señales
La función tone() también permite especificar la duración del sonido generado.
Función para detener la generación de señales
Pese a su sencillez, al usar las funciones para la generación de tone tenemos que
asumir importantes limitaciones.
• La función Tone emplea el Timer 2, por lo que mientras esté funcionando no
podremos usar las salidas PWM en los pines 3 y 11 en Arduino Nano y Uno
(pines 9 y 10 en Arduino Mega).
• No podemos usar la función tone() en dos pines de forma simultánea.
Deberemos apagar el tono con la funcion noTone() antes de poder usarlo en otro
pin.
• Los rangos de la función tone son de 31 Hz a 65535 Hz.
“Formando líderes para la construcción de un nuevo país en paz”
Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 2
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 [Link]
Música con Arduino.
En esta ocasión vamos a generar música con Arduino mediante código porque va a ser
la manera de poder hacer sonar nuestro proyecto en cualquier nota que aparezca en la
partitura que consultemos, ya que vamos a poder programar también notas sostenidas.
Escala musical
Las frecuencias adecuadas para cada nota se observan en la siguiente tabla:
Frecuencias para cada nota musical
“Formando líderes para la construcción de un nuevo país en paz”
Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 3
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 [Link]
El tiempo es la duración de la nota. Cada figura tendrá un tiempo determinado por el
tiempo de la negra (t), de tal manera que una blanca durará doble que una negra y una
corchea la mitad. La relación de los tiempos de las figuras es fija, pero el tempo lo
vamos a marcar nosotros. Si no declaramos el tiempo en la instrucción tone deberemos
hacer un delay con la duración y utilizar la instrucción noTone posteriormente.
Tiempos en música
Por ejemplo, si establecemos que una negra sea 1 segundo nos quedaría lo siguiente:
Tiempos respectivos para negra a 1 seg
“Formando líderes para la construcción de un nuevo país en paz”
Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 4
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 [Link]
Ejemplo: El circuito propuesto consta de un Buzzer que emitirá sonidos
programados en Arduino, para ello se requiere:
• 1 Arduino Uno
• 1 Buzzer (piezo)
• 1 Protoboard
Circuito: emitir notas musicales con Arduino
Código: Emitir notas musicales con Arduino
void setup()
{
}
void loop()
{
tone(9,400,100); //Se emite un tono en el pin 9 de frecuencia 400 y 100 mseg de retardo
delay(500);
tone(9,800,100); //Se emite un tono en el pin 9 de frecuencia 800 y 100 mseg de retardo
delay(500);
}
“Formando líderes para la construcción de un nuevo país en paz”
Universidad de Pamplona
Pamplona - Norte de Santander - Colombia 5
Tels: (7) 5685303 - 5685304 - 5685305 - Fax: 5682750
SC-CER96940 [Link]