En este tutorial vas a aprender cómo usar un buzzer pasivo con tu placa Elegoo ESP32. El objetivo del experimento es generar ocho sonidos distintos, cada uno con una duración de 0,5 segundos, recorriendo las notas desde Do central hasta Do agudo.
Vista general
El propósito de esta práctica es familiarizarte con el funcionamiento del buzzer pasivo. Vas a programar la placa para que emita una escala musical: desde Do (523Hz), Re (587Hz), Mi (659Hz), Fa (698Hz), Sol (784Hz), La (880Hz), Si (988Hz) hasta Do agudo (1047Hz).
Componentes requeridos
(1) x Elegoo ESP32
(1) x Buzzer pasivo
(2) x Protoboard de 400 puntos
(2) x Cables F-F (Hembra a Hembra tipo DuPont)
Introducción de los componentes
Buzzer pasivo: El principio de funcionamiento del buzzer pasivo consiste en usar PWM para generar audio y hacer que el aire vibre. Siempre que cambies la frecuencia de vibración de forma adecuada, vas a poder generar distintos sonidos. Por ejemplo, mandando un pulso de 523Hz generás un Do, con 587Hz un Re, y con 659Hz un Mi. Gracias a esto, podés usar el buzzer para tocar una canción.
Tenés que tener cuidado de no usar la función analogWrite() de la placa ESP32 para generar pulsos en un buzzer ACTIVO, ya que la frecuencia de salida de analogWrite() es fija (500Hz).
Esquema de conexión
Diagrama de cableado
Código
Podés hacer clic en el enlace de texto azul para descargar el archivo del programa a tu equipo; una vez descargado, hacé doble clic para abrirlo. Tené en cuenta que antes de abrirlo tenés que tener instalado el Arduino IDE y los componentes necesarios, como el soporte para la placa ESP32 y sus drivers. Si tenés dudas sobre este proceso, fijate en el capítulo "part 1" de la documentación para una guía detallada.
📥 DESCARGAR passive_buzzer.zip
Antes de correr el código, asegurate de haber instalado la librería pitches. Si no la tenés, el código no va a funcionar. Podés importar el archivo comprimido "pitches" que viene en el ZIP siguiendo los pasos habituales para agregar librerías externas en el entorno de desarrollo.
#include "pitches.h" es una directiva que se usa en Arduino (C/C++) para incluir archivos de cabecera. Básicamente, "copia y pega" el contenido del archivo pitches.h en tu código actual.
pitches.h es un archivo personalizado que facilita la tarea de tocar música. Usa definiciones de macros (#define) para asociar valores de frecuencia física (en Hertz/Hz) con nombres de notas musicales:
Estructura básica: Se usa el prefijo NOTE_, seguido del nombre de la nota (ej. C, D, E) y el número de octava (ej. 4 para la octava central, 5 para la alta). El valor que sigue es la frecuencia de vibración. Esto evita que tengas que acordarte de los valores de frecuencia de cada nota; simplemente usás nombres como NOTE_C4 o NOTE_A4 para que el buzzer emita el tono correcto.
int melody[] = {NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6};
Un array es una colección de variables a las que se accede mediante un número de índice. En los sketches de Arduino, los arrays son muy útiles para organizar datos de forma secuencial.
Para declarar un array, podés definir el tamaño (ej. int mypins[6]) o inicializarlo directamente con valores (ej. int mypins[]={2,3,4,5,6}). Si no ponés un tamaño específico, el compilador cuenta los elementos y lo asigna automáticamente.
Los arrays empiezan siempre desde el í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és que ser cuidadoso y no intentar acceder a un índice mayor al tamaño declarado (menos uno), porque estarías leyendo direcciones de memoria que pueden contener cualquier cosa o ser usadas por otras funciones del sistema.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.