En este tutorial vas a aprender cómo usar un buzzer pasivo con tu placa Elegoo Mega 2560. El objetivo del experimento es generar ocho sonidos distintos, cada uno con una duración de 0,5 segundos, recorriendo la escala desde Do (523Hz) hasta Do agudo (1047Hz).
Componentes necesarios
Para este proyecto vas a necesitar: (1) Elegoo Mega 2560 R3, (1) Buzzer pasivo y (2) cables DuPont hembra-macho (F-M).
Introducción al componente
El principio de funcionamiento del buzzer pasivo consiste en usar señales PWM para generar audio que haga vibrar el aire. Si cambiás la frecuencia de vibración de forma adecuada, podés generar diferentes sonidos. Por ejemplo, enviando un pulso de 523Hz generás un Do, con 587Hz un Re, y con 659Hz un Mi. Usando el buzzer, podés llegar a tocar una canción completa.
Tené cuidado de no usar la función analogWrite() para generar pulsos en un buzzer ACTIVO, ya que la salida de pulso de esa función es fija (500Hz).
Esquema de conexión y diagrama de cableado
Fijate en los diagramas correspondientes para conectar el pin positivo del buzzer a la salida digital de la placa y el negativo a tierra (GND).
Código
Podés hacer clic en el enlace de texto azul para descargar el programa en tu dispositivo y abrirlo con un doble clic. Aseguráte de tener instalado el entorno de desarrollo Arduino IDE y los controladores correspondientes para la placa 2560. Si tenés dudas sobre este proceso, revisá la sección "Part 1" de la documentación.
📥 DESCARGAR passive_buzzer.zip
Antes de correr el código, verificá que tenés instalada la librería pitches. Sin ella, el programa no va a funcionar. Podés importar el archivo ZIP que viene con este tutorial siguiendo los pasos habituales en el IDE para añadir librerías externas.
La directiva #include "pitches.h" se encarga de copiar y pegar el contenido de ese archivo de cabecera personalizado en tu código actual. Este archivo es fundamental para controlar buzzers o parlantes, ya que usa macros (#define) para asociar frecuencias físicas (en Hertz) con notas musicales específicas (como NOTE_C4 para Do medio).
Uso de Arrays (Arreglos)
En el código usamos una variable de tipo array: int melody[] = {NOTE_C5, NOTE_D5, ...}. Un array es una colección de variables a las que podés acceder mediante un número de índice. En el lenguaje C++ de Arduino, los arrays son muy útiles para organizar listas de datos.
Al declarar un array como int mypins[] = {2, 3, 4, 5, 6};, el compilador cuenta los elementos y crea el espacio necesario automáticamente. Es importante recordar que los arrays tienen índice cero; esto significa que el primer elemento está en la posición 0. Por ejemplo, en un array de diez elementos, el último índice válido es el 9.
Tené mucho cuidado de no intentar acceder a un índice mayor al tamaño del array menos uno (por ejemplo, acceder al índice 10 en un array de tamaño 10). Hacer esto implica leer o escribir en una dirección de memoria que puede estar siendo usada por otros procesos, lo que suele causar errores o datos inválidos en tu programa.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.