🔩Funcionamiento
El mundo de la electrónica y la programación nos ofrece un sinfín de posibilidades creativas. En esta ocasión, nos embarcaremos en un proyecto fascinante que fusiona la potencia del microcontrolador Arduino con la simplicidad de un buzzer pasivo (KY-006). Nuestro objetivo no es otro que recrear, de manera simplificada pero con todo el espíritu heroico, la majestuosa y mundialmente conocida melodía de “Los Vengadores” (The Avengers Theme). Este proyecto es una excelente puerta de entrada al control de sonido y la manipulación de frecuencias con Arduino.
Antes de sumergirnos en el código y el montaje, es crucial entender cómo funciona la magia.
El Buzzer Pasivo: Un Altavoz en Miniatura
A diferencia de un buzzer activo que solo necesita alimentación constante (positivo y negativo) para emitir un tono fijo, el buzzer pasivo requiere que le suministremos una señal cuadrada de frecuencia variable para producir diferentes tonos. Actúa como un pequeño altavoz, donde la frecuencia de la señal de entrada determinará el tono (nota musical) que escucharemos. Cuanto mayor sea la frecuencia (medida en Hertzios – Hz), más agudo será el sonido.
Arduino y la Función tone()
Arduino posee una función intrínseca, vital para este proyecto, llamada tone(pin, frecuencia, duración).
pin: El pin digital de Arduino al que conectamos el buzzer. Es fundamental usar un pin digital.frecuencia: El valor en Hz de la nota musical que queremos generar (ej. 440 Hz para La 4).duración(opcional): El tiempo en milisegundos que durará la nota.
Esta función genera la señal cuadrada precisa en el pin especificado, liberando al programador de la complejidad de generar manualmente la onda mediante ciclos HIGH y LOW. Para detener la emisión del sonido, se utiliza la función noTone(pin).
🔨Componentes
| Componente | Cantidad | Especificación | Función |
|---|---|---|---|
| Placa Arduino | 1 | Arduino Uno, Nano, etc | Control de componentes(cerebro) |
| Buzzer | 1 | pasivo (KY-006) | Emitir el sonido |
| Cables de conexión | n | Unir componentes |
🔌Conexiones
- Conecta el pin de señal(S) al pin digital 8 de la placa Arduino.
- Conecta el pin positivo del buzzer al pin 5v de la placa Arduino.
- Conecta el pin negativo del buzzer al pin GND de la placa Arduino.
0️⃣Código
El código de Arduino (sketch) utilizará arrays para almacenar de manera ordenada las frecuencias de las notas y sus duraciones, haciendo el código escalable y fácil de leer.
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 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 | #include <Arduino.h> int pinBuzzer = 8; int Do = 261; int Re = 293; int Mi = 329; int Fa = 349; int Sol = 392; int La = 440; int Si = 493; int negra = 100; int blanca = 200; int retardo = 3000; void setup() { } void loop() { tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, blanca); delay(negra); noTone(pinBuzzer); delay(500); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(500); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(300); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(300); tone(pinBuzzer,Si, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Si, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Si, negra); delay(negra); noTone(pinBuzzer); delay(300); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); delay(500); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, blanca); delay(negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Sol, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(negra); tone(pinBuzzer,Mi, blanca); delay(negra); noTone(pinBuzzer); delay(negra); delay(negra); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(500); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(300); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Mi, negra); delay(negra); noTone(pinBuzzer); delay(300); tone(pinBuzzer,Si, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Si, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,Si, negra); delay(negra); noTone(pinBuzzer); delay(300); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); tone(pinBuzzer,La, negra); delay(negra); noTone(pinBuzzer); delay(500); delay(retardo); } |
🖌️Diseños

🎬Videos
📑Conclusión
Este proyecto, aparentemente sencillo, encapsula la esencia de la electrónica creativa y la programación. Hemos transformado un humilde buzzer pasivo y una placa Arduino en un instrumento musical digital, logrando reproducir, nota por nota, el espíritu épico del tema de “Los Vengadores”.
La clave del éxito reside en la comprensión y aplicación de la función tone(), que nos permite navegar por el vasto espectro del sonido al manipular con precisión las frecuencias en Hertzios (Hz). Al mapear notas musicales a valores de frecuencia y luego gestionarlas mediante arrays y ciclos de programación, demostramos que la música no es más que una secuencia organizada de números y tiempos controlados digitalmente.
Más allá de la melodía en sí, este experimento es un pilar fundamental en la electrónica con microcontroladores, enseñándonos sobre:
- Generación de Señal (PWM): Entendiendo cómo Arduino genera la onda cuadrada necesaria para que el buzzer pasivo vibre.
- Manejo de Arrays: Utilizando estructuras de datos para gestionar secuencias complejas (melodías y ritmos) de manera limpia y escalable.
- Sincronización: Controlando el tiempo preciso (milisegundos) para la duración y separación de cada nota, lo que define el ritmo y la musicalidad del proyecto.
En resumen, hemos cruzado la frontera entre el hardware y el software para dar vida a la banda sonora de un universo cinematográfico, probando que incluso el componente más básico puede ser heroico en las manos del programador. ¡Este simple montaje es tu primer paso hacia la composición y el control de audio avanzado con Arduino!

