En esta lección vas a aprender cómo generar sonidos usando un buzzer activo con tu placa Mega 2560. Es un ejercicio ideal para entender el funcionamiento básico de los componentes acústicos en electrónica.
Resumen
Vas a ver lo sencillo que es programar una secuencia sonora. El objetivo es que logres controlar las frecuencias de salida para emitir distintos tipos de pitidos.
Componentes necesarios
(1) Elegoo Mega 2560 R3, (1) Buzzer activo y (2) Cables DuPont H-M (Hembra a Macho).
Introducción a los componentes
Los buzzers electrónicos se alimentan con corriente continua (DC) y vienen con un circuito integrado. Se usan muchísimo en computadoras, alarmas, juguetes y dispositivos automotrices. Se dividen en activos y pasivos: si ponés los pines hacia arriba, el que tiene la placa de circuito verde a la vista es el pasivo, mientras que el que está cerrado con cinta negra es el activo. La diferencia clave es que el activo tiene un oscilador interno, por lo que suena apenas recibe energía. El pasivo, en cambio, no tiene esa fuente y necesita ondas cuadradas de entre 2K y 5K para funcionar. Por esto mismo, el activo suele ser un poco más caro.
Esquema de conexión y Diagrama de cableado
Asegurate de conectar el pin positivo del buzzer al pin digital 12 de la placa y el negativo a tierra (GND) para que el circuito cierre correctamente.
Código
Podés descargar el archivo .ino y abrirlo con el IDE de Arduino. Antes de cargarlo, chequeá que tenés seleccionado el modelo 2560 y los drivers instalados. El programa define el pin 12 como salida y usa bucles para alternar entre dos frecuencias distintas, generando un sonido intermitente.
int buzzer = 12; // Pin del buzzer activo
void setup()
{
pinMode(buzzer, OUTPUT); // Inicializa el pin como salida
}
void loop()
{
unsigned char i;
while(1)
{
// Emite una frecuencia
for(i=0; i<80; i++)
{
digitalWrite(buzzer, HIGH);
delay(1); // Espera 1ms
digitalWrite(buzzer, LOW);
delay(1); // Espera 1ms
}
// Emite otra frecuencia
for(i=0; i<100; i++)
{
digitalWrite(buzzer, HIGH);
delay(2); // Espera 2ms
digitalWrite(buzzer, LOW);
delay(2); // Espera 2ms
}
}
}
Estructura de control: while
Un bucle while se repite de forma continua e infinita hasta que la expresión entre paréntesis se vuelve falsa. Es fundamental que algo dentro del código cambie esa variable (como un contador o un sensor) para poder salir; de lo contrario, el programa se queda trabado ahí. Si querés un bucle infinito a propósito, podés usar while(1) y después programar un "break" para forzar la salida cuando se cumpla una condición específica.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.