Download Haciendo Sonidos con Ardu

Document related concepts
Transcript
Haciendo Sonidos con Ardu
Objetivo: Conseguir reproducir mediante un buzzer (o Zumbador) una escala de notas musicales.
Componentes que vamos a necesitar en el tutorial de hoy:
- BreadBoard o Protoboard
- 1 x Zumbador ( buzzer )
- Arduino UNO
- Cables
Como podemos comprobar, no necesitamos gran cosa para conseguir realizar este tutorial, así que vamos
allá.
Para empezar comentaremos qué es un zumbador:
Zumbador de Alta Frecuencia
Zumbador, zumbather o buzzer en inglés, es un transductor electroacústico que produce un sonido o
zumbido continuo o intermitente de un mismo tono. Sirve como mecanismo de señalización o aviso, y son
utilizados en múltiples sistemas como en automóviles o en electrodomésticos.
Su construcción consta de dos elementos, un electroimán y una lámina metálica de acero. El zumbador
puede ser conectado a circuitos integrados especiales para así lograr distintos tonos.
Cuando se acciona, la corriente pasa por la bobina del electroimán y produce un campo magnético
variable que hace vibrar la lámina de acero sobre la armadura. (Fuente: Wikipedia)
Vamos entonces a montar el circuito básico:
La imagen es bastante descriptiva pero aclararemos las conexiones básicas. Haremos una conexión a
la pata de la izquierda del zumbador que enlazará con el PIN GND de nuestro Arduino UNO.
Para la pata de la derecha, haremos una conexión con el PIN 12 de nuestro controlador.
Perfecto, ya tenemos montado nuestro circuito.
Ahora vayamos a por el código:
// Introducimos la variable por donde saldrá nuestra señal digital hasta el zumbador
int speakerPin = 12;
// Definimos una variable con el número de tonos que va a reproducir
int numTones = 10;
int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440};
//
mid C C# D D# E F F# G G# A
// Arriba se muestran las equivalencias entre frecuencias y Notas de la escala natural, no están todas
declaradas pero existen.
void setup()
{
// Generamos un bucle que recorra nuestro vector. Este será el encargado de introducir una determinada
frecuencia al zumbador cada vez, conforme hayamos declarado el vector de tonos.
for (int i = 0; i < numTones; i++)
{
tone(speakerPin, tones[i]);
delay(500);
}
noTone(speakerPin);
}
void loop()
{
}
A continuación os dejo un video de la escala que reproducirá el buzzer:
https://www.youtube.com/watch?v=FSFrB3IUKxg
Ahora vayamos un poco más allá. Si tienes nociones básicas de música será fácil trastear con el código
consiguiendo que nos reproduzca melodías de forma digital.
Os dejo una propuesta de código que interpreta las primeras notas de la conocida carros de fuego:
// Introducimos la variable por donde saldrá nuestra señal digital hasta el zumbador
int speakerPin = 12;
// Definimos una variable con el número de tonos que va a reproducir
int numTones = 10;
int song[] = {261, 349, 392, 440, 392, 330, -10, 261, 349, 392, 440, 392, -10, -10, 261, 349, 392,
440, 392, 330, -10, 330, 349, 330, 261, 261};
// int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440};
//
mid C C# D D# E F F# G G# A
// Arriba se muestran las equivalencias entre frecuencias y Notas de la escala natural, no están todas
declaradas pero existen. Uso una frecuencia de -10 para generar un sonido que apenas se oiga y que
sustituya al silencio que debería sonar en la melodía. Os invito a que compartáis una solución mejor para
evitar que suene el buzzer en esa posición.
void setup()
{
// Generamos un bucle que recorra nuestro vector. Este será el encargado de introducir una
determinada frecuencia al zumbador cada vez, conforme hayamos declarado el vector de tonos.
for (int i = 0; i < numTones; i++)
{
tone(speakerPin, tones[i]);
delay(500);
}
noTone(speakerPin);
}
void loop()
{
}
A continuación os dejo otro video donde suena el trozo de carros de fuego:
https://www.youtube.com/watch?v=toBpdowK6cY
Related documents