Introducción
Este proyecto convierte tu Arduino en un pequeño instrumento musical. Cada pulsador que conectemos representará una nota musical. Al presionarlo, un zumbador (buzzer) piezoeléctrico emitirá el sonido correspondiente a esa nota. Es una forma fantástica de aprender sobre la función `tone()` de Arduino y sobre cómo funcionan las resistencias pull-up internas.
Materiales Necesarios
- Placa Arduino UNO
- Zumbador (Buzzer) piezoeléctrico
- Varios Pulsadores (usaremos 7 para una escala musical)
- Protoboard y Cables Jumper
Esquema de Montaje
Simplificaremos el montaje usando las resistencias `pull-up` internas de Arduino, así no necesitaremos resistencias externas para los botones. Cada botón conectará un pin digital a tierra (GND) cuando se presione.
Conexiones:
- Zumbador (+) → Pin digital 9.
- Zumbador (-) → GND.
- Cada Pulsador: una pata a un pin digital (del 2 al 8) y la otra pata a GND.
Código Arduino
// Definimos las notas musicales y los pines asociados // Frecuencias en Hz de la escala de Do Mayor int notes[] = {262, 294, 330, 349, 392, 440, 494}; // Do, Re, Mi, Fa, Sol, La, Si // Pines para los 7 pulsadores de las notas int buttonPins[] = {2, 3, 4, 5, 6, 7, 8}; const int buzzerPin = 9; void setup() { // Configurar los pines de los pulsadores como entradas con pull-up interno for (int i = 0; i < 7; i++) { pinMode(buttonPins[i], INPUT_PULLUP); } pinMode(buzzerPin, OUTPUT); } void loop() { bool notePlayed = false; // Recorremos todos los pulsadores para ver si alguno está presionado for (int i = 0; i < 7; i++) { // Con INPUT_PULLUP, un pin lee LOW cuando el botón está presionado if (digitalRead(buttonPins[i]) == LOW) { // Si se presiona un botón, toca la nota correspondiente tone(buzzerPin, notes[i]); notePlayed = true; // Marcamos que una nota está sonando break; // Salimos del bucle para no tocar varias notas a la vez } } // Si no se presionó ningún botón, apagamos el sonido if (!notePlayed) { noTone(buzzerPin); } }
Explicación del Código
INPUT_PULLUP
Al configurar un pin como «INPUT_PULLUP», activamos una resistencia interna en el microcontrolador que conecta el pin a 5V. Esto significa que el pin leerá «HIGH» por defecto. Cuando presionamos el botón, conectamos el pin a GND, y entonces lee «LOW». Esto nos ahorra tener que añadir resistencias externas.
tone(pin, frecuencia)
Esta función genera una onda cuadrada de una frecuencia específica en un pin. Es perfecta para hacer sonar zumbadores piezoeléctricos. Le pasamos el pin del buzzer y la frecuencia de la nota que queremos tocar, la cual obtenemos de nuestro array «notes».
noTone(pin)
Detiene la generación de la onda cuadrada en el pin especificado, silenciando el zumbador.
