En este post vamos a programar la melodía Marcha Imperial de Star Wars con Arduino y un zumbador.
Empieza a hacer música con Arduino.
Para ello:
- Repasaremos qué es un zumbador y tipos de zumbadores.
- Aprenderemos a calcular la resistencia que acompaña al zumbador.
- Veremos el montaje o esquema del circuito.
- Estudiaremos la PROGRAMACIÓN de la melodía de STAR WARS linea por linea de código.
Entonces, ¿Qué es un zumbador? y funcionamiento zumbador Arduino:
Se trata de un transductor piezoeléctrico que transforma la electricidad en sonido haciendo vibrar una membrana metálica.
Tiene dos terminales o patas y no tiene polaridad, es decir que el par de terminales se pueden conectar a positivo o negativo indistintamente.
Pero realmente, ¿cómo funciona el zumbador?
Tenemos dos electródos (positivo y negativo) que están tocando una lámina de material piezoeléctrico por ambas caras. El material piezoeléctrico tiene la propiedad de que varia su volumen cuando pasa a través de él la corriente eléctrica.
Entonces cuando este material piezoeléctrico vibra, hace vibrar una plaquita o membrana de metal que es la que realmente produce el sonido.
Zumbadores activos y pasivos:
Estos dos tipos de zumbadores se diferencian en que:
- Los activos solo necesitan ser alimentados por corriente continua (5V) para emitir un sonido debido a que disponen de un oscilador interno.
- Los pasivos necesitan que el pin de la placa proporcione una señal oscilatoria a una determinada frecuencia mediante la instrucción tone.
La ventaja de los pasivos es que podemos variar el tono variando la frecuencia y así producir melodías. Es por ello que vamos a utilizar un zumbador pasivo.
Conectaremos el zumbador al pin que elijamos de la placa Arduino haciendo sonar la nota correspondiente. El pin destinado para ello puede ser PWM o no, es indiferente.
Mediante el programa lo activaremos como pin de salida con la instrucción:
pinMode(altavoz,OUTPUT);
En función de la nota que queramos reproducir se aplicará la frecuencia correspondiente:
La instrucción que utilizaremos para ello será:
tone (pin, frecuencia, duración);
Parámetros:
- pin donde esta conectado el zumbador.
- frecuencia de la nota en Hz (herzios).
- duración de la nota.
Conectar zumbador a Arduino: Resistencia limitadora de intensidad.
Llegados a este punto cabría la posibilidad de plantearnos si al zumbador pasivo habría que conectarle una resistencia en serie para limitar la intensidad que lo atraviesa.
El pin de la placa compatible con Arduino nos marca la limitación de la intensidad. Si demandamos más intensidad podríamos llegar a dañar la placa.
La corriente máxima que puede dar un pin digital de dicha placa no debe sobrepasar los 40 mA. El valor recomendado ronda los 20 mA.
Vamos a comprobar qué corriente consume el zumbador y en función de eso veremos si tenemos que poner una resistencia para limitar dicha intensidad.
Mediante la ley de Ohm aplicada en el zumbador:
Resistencia del zumbador = 16 (datos del fabricante)
Al ser 321,5 mA mucho mayor que la limitación de 40 mA optamos por poner en serie una resistencia de 220.
Comprobamos con la ley de Ohm:
Con lo cual tenemos un consumo adecuado cercano a los 20 mA recomendados.
Montaje del circuito para melodía de Star Wars:
Programación melodía STAR WARS:
A medida que vayamos mejorando nuestras habilidades musicales intentaremos subir más canciones con arduino 🙂
Os dejamos con la programación y explicación de la Marcha Imperial de Star Wars:
Puedes copiarla y pegarla en tu IDE de Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
/* Star Wars - Marcha Imperial*/ int ZumbadorPin = 11; // definimos el pin al que conectaremos el zumbador. /*definimos cada una de las frecuencias de las notas musicales. c, d, e... son las notas en notación inglesa. Cuando van acompañadas de la letra S significa que esa nota es sostenido. Cuando van acompañadas de la letra H significa que esa nota está en una octava superior (High). */ int c=261; int d=294; int e=329; int f=349; int g=391; int gS=415; int a=440; int aS=455; int b=466; int cH=523; int cSH=554; int dH=587; int dSH=622; int eH=659; int fH=698; int fSH=740; int gH=783; int gSH=830; int aH=880; void setup() { pinMode(ZumbadorPin, OUTPUT); // definimos la variable ZumbadorPin como una salida. } void loop() { /* Empieza la melodia, para ello utilizamos la función tone con los parámetros: - el pin de salida, en nuestro caso el 11. - la nota para la que ya hemos definido su frecuencia. - la duración de la nota en ms. Después de la función tone utilizamos la función delay para crear un silencio del valor igual a la nota y así separar las notas unas de otras (si no, no se marca bien la nota). Añadimos los 50 ms simplemente porque nos parece que ese pequeño aumento del silencio hace que se escuche mejor la melodía pero se puede quitar sin problemas. */ tone(ZumbadorPin, a, 500); delay(500+50); tone(ZumbadorPin, a, 500); delay(500+50); tone(ZumbadorPin, a, 500); delay(500+50); tone(ZumbadorPin, f, 350); delay(350+50); tone(ZumbadorPin, cH, 150); delay(150+50); tone(ZumbadorPin, a, 500); delay(500+50); tone(ZumbadorPin, f, 350); delay(350+50); tone(ZumbadorPin, cH, 150); delay(150+50); tone(ZumbadorPin, a, 1000); delay(1000+50); tone(ZumbadorPin, eH, 500); delay(500+50); tone(ZumbadorPin, eH, 500); delay(500+50); tone(ZumbadorPin, eH, 500); delay(500+50); tone(ZumbadorPin, fH, 350); delay(350+50); tone(ZumbadorPin, cH, 150); delay(150+50); tone(ZumbadorPin, gS, 500); delay(500+50); tone(ZumbadorPin, f, 350); delay(350+50); tone(ZumbadorPin, cH, 150); delay(150+50); tone(ZumbadorPin, a, 1000); delay(1000+50); tone(ZumbadorPin, aH, 500); delay(500+50); tone(ZumbadorPin, a, 350); delay(350+50); tone(ZumbadorPin, a, 150); delay(150+50); tone(ZumbadorPin, aH, 500); delay(500+50); tone(ZumbadorPin, gSH, 250); delay(250+50); tone(ZumbadorPin, gH, 250); delay(250+50); tone(ZumbadorPin, fSH, 125); delay(125+50); tone(ZumbadorPin, fH, 125); delay(125+50); tone(ZumbadorPin, fSH, 250); delay(250+50); delay(250); tone(ZumbadorPin, aS, 250); delay(250+50); tone(ZumbadorPin, dSH, 500); delay(500+50); tone(ZumbadorPin, dH, 250); delay(250+50); tone(ZumbadorPin, cSH, 250); delay(250+50); // virtuosismo :))) tone(ZumbadorPin, cH, 125); delay(125+50); tone(ZumbadorPin, b, 125); delay(125+50); tone(ZumbadorPin, cH, 250); delay(250+50); delay(250); tone(ZumbadorPin, f, 125); delay(125+50); tone(ZumbadorPin, gS, 500); delay(500+50); tone(ZumbadorPin, f, 375); delay(375+50); tone(ZumbadorPin, a, 125); delay(125+50); tone(ZumbadorPin, cH, 500); delay(500+50); tone(ZumbadorPin, a, 375); delay(375+50); tone(ZumbadorPin, cH, 125); delay(125+50); tone(ZumbadorPin, eH, 1000); delay(1000+50); tone(ZumbadorPin, aH, 500); delay(500+50); tone(ZumbadorPin, a, 350); delay(350+50); tone(ZumbadorPin, a, 150); delay(150+50); tone(ZumbadorPin, aH, 500); delay(500+50); tone(ZumbadorPin, gSH, 250); delay(250+50); tone(ZumbadorPin, gH, 250); delay(250+50); tone(ZumbadorPin, fSH, 125); delay(125+50); tone(ZumbadorPin, fH, 125); delay(125+50); tone(ZumbadorPin, fSH, 250); delay(250+50); delay(250); tone(ZumbadorPin, aS, 250); delay(250+50); tone(ZumbadorPin, dSH, 500); delay(500+50); tone(ZumbadorPin, dH, 250); delay(250+50); tone(ZumbadorPin, cSH, 250); delay(250+50); tone(ZumbadorPin, cH, 125); delay(125+50); tone(ZumbadorPin, b, 125); delay(125+50); tone(ZumbadorPin, cH, 250); delay(250+50); delay(250); tone(ZumbadorPin, f, 250); delay(250+50); tone(ZumbadorPin, gS, 500); delay(500+50); tone(ZumbadorPin, f, 375); delay(375+50); tone(ZumbadorPin, cH, 125); delay(125+50); tone(ZumbadorPin, a, 500); delay(500+50); tone(ZumbadorPin, f, 375); delay(375+50); tone(ZumbadorPin, c, 125); delay(125+50); tone(ZumbadorPin, a, 1000); delay(1000+50); delay(2000); // dos segundos para volver a empezar. } |
En nuestra página encontraréis el proyecto del “CAJA DE MÚSICA” con el que podrás ampliar tus conocimientos sobre melodías con Arduino.
En él encontrarás las canciones “Feliz cumpleaños” y el villancico “Jingle Bells” libres de derechos de autor. ¡ÉCHALE UN VISTAZO!
¡También puedes programar en ella la canción de este post o cualquier otra!
IMPORTANTE: OFRECEMOS GRANDES DESCUENTOS PARA CENTROS EDUCATIVOS! SI ERES UN CENTRO EDUCATIVO PIDE PRESUPUESTO PERSONALIZADO AQUÍ
[product_page id=”26″]
Comparte si te ha gustado 🙂
Saludos del equipo de InputMakers y ¡Sigue siempre aprendiendo!