MÚSICA CON ARDUINO
1. COMPETENCIA ESPECIFICA DE LA SESIÓN
- Programación de Tonos musicales.
- Creación de nuevos bloques.
2. MARCO TEÓRICO
2.1 TEORÍA MUSICAL
¿Cómo funciona el cifrado americano?
Es realmente muy sencillo de comprender, veamos una comparación de las notas del piano con cifrado americano
Ejemplo de cifrado americano y las notas del piano
Escala de Do
Nomenclatura latina: Do Re Mi Fa Sol La Si Do
Cifrado Americano: C D E F G A B C
Como vemos, a cada nota se le asigna una letra. Una vez realizada la comparación, es fácil notar que el cifrado americano simplemente comienza por la nota de La (A).
Cifrado americano
A B C D E F G
La Si Do Re Mi Fa Sol
Vamos a hacer uso de la instrucción tone cuyos argumentos son el pin de salida al cual tenemos conectado el zumbador, la frecuencia de la señal que vamos a generar y que es la que variará la nota y la duración en milisegundos (opcional). Con varias instrucciones tone podremos hacer música con Arduino.
tone(pin, frecuencia)tone(pin, frecuencia, tiempo)
El pin de salida debe ser de tipo PWM ya que debemos poder variar su frecuencia. En Arduino Uno, Mini y Nano podrán ser 3, 5, 6, 9, 10 y 11La frecuencia adecuada para cada nota la tenéis en una tabla al final del tutorial.
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 instrución noTone posteriormente.Por ejemplo si establecemos que una negra sea 1 segundo nos quedaría lo siguiente:
Utilizaremos la instrucción noTone si no indicamos un tiempo en la instrucción tone. Esta instrucción indica que se deje de emitir la señal por el pin indicado.
noTone(pin)
Con esto ya podemos generar música con Arduino o notas musicales sueltas.Debemos conectar el zumbador con su patilla marcada como negativa a masa (GND) y la patilla marcada como positiva a nuestro pin con posibilidad de salida PWM. No te preocupes si lo conectas al revés, simplemente no funcionará y tendrás que cambiarlo, pero no habrá humo en tu lugar de trabajo.Este puede ser un ejemplo para hacer sonar una semicorchea Do de la 4ª octava (según los timepos de ejemplo de la tabla de arriba) a través del pin 3:
void setup()
{
pinMode(3, OUTPUT); // Fija el pin 3 como salida.
}
void loop()
{
tone(3, 261.63, 250); // Lanza señal a 261,63Hz por el pin 3 durante 250ms.
}
Este bucle sería equivalente a poner:
void loop()
{
tone(3, 261.63); // Lanza señal a 261,63Hz por el pin 3.
delay(250); // Espera 250ms.
noTone(3); // Dejamos de emitir la señal.
}
Si la música con Arduino que queremos crear es una melodía relativamente larga lo mejor es utilizar arrays para almacenar todas las notas (frecuencias) y todos los tiempos.
Primero definimos los arrays:
long DO=523.25, //definimos las frecuencias de las notas3. MATERIALES Y EQUIPO
DoS=554.37,
RE=587.33,
RES=622.25,
MI=659.26,
FA=698.46,
FAS=739.99,
SOL=783.99,
SOLS=830.61,
LA=880,
LAS=932.33,
SI=987.77,
RE2=1174.66,
FAS2=1479.98,
PAU=30000; //pausa
int melodia[] = {SI, RE2, SI, RE2, PAU, SI, LA, SI, SI, SI, PAU, RE2, SI, SI, PAU, RE2, PAU, RE2, RE2, PAU, SI, RE2, SI, RE2, PAU,
SI, LA, SI, SI, SI, PAU, RE2, SI, SI, PAU, RE2, PAU, RE2, RE2, PAU, RE2, PAU, SI, RE2, PAU, SI, RE2, PAU, SI, RE2,
PAU, SI, PAU, RE2, SI, LA, SI, PAU, RE2,PAU, SI, RE2, PAU, SI, RE2, PAU, SI, RE2, PAU, SI, PAU, RE2, SI, LA, SI,
PAU, FAS2, PAU, RE2, FAS2, PAU, RE2, FAS2, PAU, RE2 ,FAS2, PAU, RE2, FAS2, PAU, RE2, LA, SOLS, SI, PAU, FAS2, PAU,
RE2, FAS2, PAU, RE2, FAS2, PAU, RE2, FAS2, PAU, RE2, FAS2, PAU, RE2, LA, SI, SI
};
int d=1000, e=500, m=250, c=125; //definimos los tiempos de doble, entera, media y cuarta
int duracionNota[] = {m, m, m, m, e, c, m, m, c, m, e, m, m, m, e, m, m, m, m, d, m, m, m, m, e, c, m, m, c, m, e, m, m, m, e, m, m, m, m, d,
m, m, m, m, m, m, m, m, m, m, m, m, c, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m,
m, m, m, m, m, m, m, m, m, m, m, m, c, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m,
};
En el bucle incluiremos los arrays dentro de la función tone:
for (int notaActual = 0; notaActual < 112; notaActual++) { //va a repetir las 112 notas
tone(11, melodia[notaActual]); //da el tono a la frecuencia de la nota en ese momento
delay(duracionNota[notaActual]);//se mantiene con la nota el tiempo definido para esa nota
noTone(11); //finaliza la melodía
}
4. EVIDENCIAS DE TAREAS DE LABORATORIO
VÍDEO
5. OBSERVACIONES
*El sonido del ETS -7000 nos daba algunos ruidos ,no tan agradables
*Para que el sonido suene mejor solo tenemos que modificar (medio,uncuarto,etc)
*Algunos pines de no hacian buen contacto ,asi que tubimos que utilizar el arduino de nuestro compañero
6. CONCLUSIONES
*Se logro hacer las canciones de star wars y del titanic
*Se pudo relizar el orden de los sonidos para que pueda salir los sonidos requeridos
*Se entendió el funcionamiento del sistema americano para poder realizar la canción
7. FOTO GRUPAL










OK
ResponderEliminar