Skip to Content

How To Interface A Piezo Buzzer With Arduino

How To Interface A Piezo Buzzer With Arduino

¿Te has preguntado alguna vez cómo crear varios proyectos bonitos con un simple zumbador? Este tutorial le mostrará cómo interconectar un zumbador con Arduino.

Aprenderás a conectar un zumbador a Arduino, junto con el principio básico de funcionamiento del zumbador.

Voy a dar una guía paso a paso para conectar y manejar el zumbador.

Puedes reproducir canciones en él como en un altavoz normal, utilizar el zumbador para avisar o dar una respuesta audible en los juegos, y mucho más.

En la primera parte del artículo, te llevaré a través del principio de funcionamiento básico y los tipos más comunes de zumbador sed en los proyectos de Arduino.

Encontrarás una guía paso a paso para conectar un zumbador a un Arduino, un programa de ejemplo para probar el circuito.

Más adelante en el artículo, encontrarás varios proyectos con diagramas de conexiones y código Arduino.

Comencemos.

Componentes necesarios para utilizar el plotter de serie Arduino

Componentes de hardware

Software

Consejo rápido: Compra los zumbadores que son compatibles con Arduino UNO. El zumbador anterior puede trabajar de 3V a 24 V; por lo tanto, esta es una buena opción.

Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com. As an Amazon Associate we earn from qualifying purchases.

¿Qué es un timbre?

Como su nombre indica, el zumbador crea un tono audible cuando se le aplica energía eléctrica.

Los zumbadores más comunes que se encuentran son los zumbadores piezoeléctricos, que son fáciles de usar. 

El elemento principal de un zumbador es un piezo (palabra griega que significa apretar), que oscila y crea un tono cuando se le aplica corriente continua.

Los zumbadores piezoeléctricos son muy fiables y están disponibles en varios formatos. Puedes ver aplicaciones de zumbadores piezoeléctricos en juguetes, hornos microondas, lavadoras, otros electrodomésticos, etc.

El zumbador piezoeléctrico tiene dos pines. El cable positivo (rojo) y el negativo (negro).

Conectarás el cable negativo al pin GND y el positivo a un pin PWM del Arduino.

wokwi buzzer
Créditos de la imagen: https://docs.wokwi.com

En la siguiente sección, le mostraré los parámetros más críticos de un zumbador piezoeléctrico.

Los parámetros le ayudan a elegir el zumbador correcto para su próximo proyecto de zumbador piezoeléctrico Arduino.

Tensión nominal: es la tensión a la que se miden todas las demás especificaciones (sonido, consumo de corriente, etc.) mencionadas en la ficha técnica.

Rango de tensión de funcionamiento - Rango de tensión de funcionamiento seguro, que puede utilizar para trabajar con el zumbador. Por ejemplo, si trabajas con el Arduino UNO, la tensión aplicada al zumbador será de 5 V. Sigue siendo aceptable si 5V está en el rango de tensión de funcionamiento.

Rango de temperatura de funcionamiento: Rango de temperatura más allá del cual el rendimiento del zumbador no será fiable o fallará permanentemente.

Frecuencia: La mayoría de los zumbadores piezoeléctricos tienen rangos de 2 a 4 kHz. La gama de frecuencias estará en el rango audible (20 Hz a 20 kHz).

Un tipo común de zumbador que se ve por ahí en una foto.

tipo común de zumbadores
Fuente de la imagen: www.amazon.com

El principio básico de funcionamiento se ilustra en la siguiente imagen.

Principio de funcionamiento de los zumbadores piezoeléctricos
Fuente de la imagen: www.cuidevices.com
zumbadores piezoeléctricos y magnéticos
Fuente de la imagen: www.cuidevices.com

Cuando envíes una onda cuadrada, apretarás el elemento a una frecuencia determinada.

La frecuencia a la que conduce la onda cuadrada será la frecuencia a la que vibra el Piezo.

Encontrarás toda la información necesaria para conectar y accionar el zumbador a la frecuencia (tono) deseada en los ejemplos del proyecto Arduino del zumbador en las siguientes secciones.

Instrucciones paso a paso para conectar un zumbador piezoeléctrico a Arduino

Las siguientes secciones le mostrarán cómo conectar el zumbador piezoeléctrico con un Arduino y construir varios proyectos interesantes de zumbadores.

Proyecto 1: Un simple tono de melodía en Arduino usando un zumbador

En este proyecto, conectarás un zumbador a un Arduino y construirás un proyecto que reproducirá las melodías.

Este proyecto dará los bloques básicos requeridos para construir el proyecto del zumbador en Arduino UNO.

Connecting Buzzer to Arduino
Connecting Buzzer to Arduino

1) Empieza con el Arduino y un zumbador

Los mismos pasos se aplican a Arduino UNO, Arduino Mega y otras placas Arduino. Estoy usando el PIN 8 del Arduino para este proyecto de ejemplo.

Siempre puedes utilizar otros pines en función de la disponibilidad de pines en tu próximo proyecto.

Asegúrese de actualizar el nuevo PIN en el nuevo código.

Empieza con el Arduino y un zumbador

No necesitas ninguna resistencia limitadora de corriente para un zumbador. Puedes conectarlo directamente al Arduino UNO.

2) Conecta el cable negro del Buzzer al pin GND del Arduino

Conecta el cable negro del Buzzer al pin GND del Arduino

Conecta el cable negro del zumbador al pin GND del Arduino. Hay tres pines GND en el Arduino UNO. Puedes elegir cualquiera de los tres pines GND.

3) Conecta el cable rojo del zumbador al PIN8 de Arduino

Conecta el cable rojo del zumbador al PIN 8 de Arduino. Esto completa todas las conexiones esenciales.

Conecta el cable rojo del zumbador al PIN8 de Arduino
Connecting Buzzer to Arduino

En la siguiente sección, programarás el Arduino con el código de ejemplo dado.

4) Programa Arduino para crear una simple melodía usando un zumbador piezoeléctrico

Puedes utilizar el código siguiente para probar el circuito y también para completar el primer proyecto.

/*
  Melody
  Plays a melody
  circuit:
  - 8 ohm speaker on digital pin 8
  created 21 Jan 2010
  modified 30 Aug 2011
  by Tom Igoe
  This example code is in the public domain.
  http://www.arduino.cc/en/Tutorial/Tone
*/
 
#include "pitches.h"
 
// notes in the melody:
int melody[] = {
 
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};
 
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};
 
void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 8; thisNote++) {
 
    // to calculate the note duration, take one second divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(8, melody[thisNote], noteDuration);
 
    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
 
    // stop the tone playing:
    noTone(8);
  }
}
 
void loop() {
  // no need to repeat the melody.
}

El archivo pitches. h consiste en la lista de notas definidas como constantes. Puede crear un nuevo archivo con el nombre pitches.h y pegar en él el contenido siguiente.

/**************************************************
   Este archivo define las constantes con la frecuencia
   de diferentes notas musicales.
 *************************************************/
 
#define NOTA_B0 31
#define NOTA_C1 33
#define NOTA_CS1 35
#define NOTA_D1 37
#define NOTA_DS1 39
#define NOTA_E1 41
#define NOTA_F1 44
#define NOTA_FS1 46
#define NOTA_G1 49
#Definición de NOTA_GS1 52
#Definición de NOTA_A1 55
#Definición de NOTE_AS1 58
#Definición de NOTA_B1 62
#define NOTA_C2 65
#define NOTA_CS2 69
#Definición de NOTA_D2 73
#Definición de NOTA_DS2 78
#Definición de NOTA_E2 82
#Definición de NOTA_F2 87
#Definición de NOTA_FS2 93
#Definición de NOTA_G2 98
#Definición de NOTA_GS2 104
#Definición de NOTA_A2 110
#Definición NOTA_AS2 117
#Definición de NOTA_B2 123
#Definición de NOTA_C3 131
#Definición de NOTA_CS3 139
#Definición de NOTA_D3 147
#Definición de NOTA_DS3 156
#Definición de NOTA_E3 165
#Definición de NOTA_F3 175
#Definición de NOTE_FS3 185
#Definición de NOTA_G3 196
#Definición de NOTA_GS3 208
#Definición de NOTA_A3 220
#Definición de NOTE_AS3 233
#Definición de NOTA_B3 247
#Definición NOTA_C4 262
#Definición de NOTA_CS4 277
#Definición NOTA_D4 294
#Definición de NOTE_DS4 311
#Definición NOTA_E4 330
#Definición de NOTE_F4 349
#Definición de NOTE_FS4 370
#Definición NOTA_G4 392
#Definición de NOTE_GS4 415
#Definición de NOTE_A4 440
#Definición de NOTE_AS4 466
#Definición de NOTE_B4 494
#Definición de NOTA_C5 523
#Definición de NOTE_CS5 554
#Definición de NOTA_D5 587
#define NOTA_DS5 622
#define NOTA_E5 659
#define NOTA_F5 698
#Definición de NOTE_FS5 740
#Definición de NOTE_G5 784
#define NOTA_GS5 831
#define NOTA_A5 880
#define NOTA_AS5 932
#define NOTA_B5 988
#define NOTA_C6 1047
#define NOTA_CS6 1109
#define NOTA_D6 1175
#define NOTA_DS6 1245
#define NOTA_E6 1319
#define NOTA_F6 1397
#define NOTA_FS6 1480
#define NOTA_G6 1568
#define NOTA_GS6 1661
#define NOTA_A6 1760
#Definición de NOTE_AS6 1865
#define NOTA_B6 1976
#define NOTA_C7 2093
#Definición NOTA_CS7 2217
#Definición NOTA_D7 2349
#define NOTA_DS7 2489
#define NOTA_E7 2637
#define NOTA_F7 2794
#define NOTA_FS7 2960
#define NOTA_G7 3136
#define NOTA_GS7 3322
#define NOTA_A7 3520
#define NOTA_AS7 3729
#define NOTA_B7 3951
#define NOTA_C8 4186
#define NOTA_CS8 4435
#define NOTA_D8 4699
#define NOTA_DS8 4978

La tabla le ayuda a consultar rápidamente las notas de cualquiera de los proyectos. La tabla asigna cada tono a una frecuencia concreta.

En la siguiente sección, se definirán dos matrices. Melody[ ] y noteDuration[ ]

La melodía[ ] consiste en una lista de notas, y la matriz noteDuration[ ] contiene la duración durante la cual el Arduino debe tocar la nota correspondiente.

// notes in the melody:
int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};
 
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};

La duración real de la nota se obtendrá utilizando los valores de la matriz noteDuration[ ].

Para convertir los valores de la matriz noteDuration [ ] en la duración exacta de la nota, hay que dividir 1000 por el valor de la matriz noteDuration[ ] .

Por ejemplo, la negra (en nuestra matriz, representada por el dígito 8 en la matriz noteDuration[ ] ) es 1000/8 en segundos. Una media nota es 1000/4 y así sucesivamente.

La función tone() es el corazón del código. La función tone( ) crea una onda cuadrada en el pin de Arduino UNO (PIN 8 en este ejemplo) utilizando un temporizador de hardware interno incorporado.

¿Qué argumentos hay que enviar a la función tone()?

La función tone() puede aceptar 2 o 3 argumentos.

1. tono(pin, frecuencia)

  • PIN - El número PIN del Arduino en el que se debe generar una onda cuadrada
  • Frecuencia - La frecuencia de la onda cuadrada

2. tono(pin, frecuencia, duración)

  • PIN - El número PIN del Arduino en el que se debe generar una onda cuadrada
  • Frecuencia - La frecuencia de la onda cuadrada
  • Duración - La duración de la generación del tono

Puedes encontrar fácilmente el proyecto de ejemplo de tone() en el IDE de Arduino.

el IDE de Arduino

¡Enhorabuena! Así se completa el primer ejemplo de un zumbador piezoeléctrico y un proyecto Arduino.

Si tiene problemas, vuelva a comprobar las conexiones y el código.

Si tienes alguna duda, no dudes en dejar un comentario, estaré encantado de responder a todas tus dudas y apoyarte.

Proyecto 2: Cómo hacer un proyecto de piano usando un zumbador y Arduino

En este proyecto encontrarás una de las formas más sencillas de construir tu propio instrumento musical. Reutilizarás los componentes comentados en el Proyecto 1 para construir un mini Piano.

Para completar este proyecto, necesitarás ocho pulsadores, un zumbador y un Arduino UNO. 

A continuación puedes ver el esquema de conexión para completar el proyecto con un interruptor en configuración activo-alto.

Cómo hacer un proyecto de piano con un zumbador y Arduino

1) Realiza las conexiones de tierra entre los interruptores y el Arduino

Empieza con las conexiones a tierra. Los pines GND de todos los pulsadores están unidos al pin GND de Arduino. Mantén todos los cables tan cortos como sea posible.

Realiza las conexiones de tierra entre los interruptores y el Arduino

2) Conecta el zumbador a Arduino

Puedes conectar el zumbador a cualquier pin libre del Arduino. Para mantener los ejemplos uniformes, conectaré el cable rojo del zumbador al PIN 8 de Arduino y el cable negro al pin GND de Arduino.

Conectar el zumbador a Arduino

3) Conecta los pulsadores a los pines digitales de Arduino

Tienes que configurar 8 pines de Arduino como entradas. Utilizarás estos pines de entrada para detectar la pulsación en los pulsadores y reproducir las melodías correspondientes. 

Aquí está la tabla para una visión general de los pines de Arduino utilizados y las conexiones realizadas.

Pines de ArduinoPropósito
PIN 8Salida digital - Zumbador
PIN 12-9, 7-4Entrada digital - Pulsadores

No dejes los pines de entrada del Arduino flotando. Cuando no estés pulsando el botón, el pin de entrada correspondiente flotará.

Las entradas flotantes pueden causar un comportamiento errático.

Puedes utilizar opciones de pull-up interno para todos los pines de entrada para mantenerlos en un estado estable.

Conecta los pulsadores a los pines digitales de Arduino

La imagen muestra las cuatro primeras conexiones entre Arduino y los pulsadores.

Ahora puede realizar todas las conexiones necesarias para completar el proyecto.

todas las conexiones entre Arduino y los pulsadores

Si has seguido todos los pasos, tus conexiones están ahora completas. En los próximos pasos programarás el Arduino UNO con el código del minipiano.

4) Programar el Arduino UNO con el código del minipiano

El código del mini-Piano presente a continuación es todo lo que necesitas. Tienes que seguir tres sencillos pasos para programar el Arduino:

  • Abrir un boceto vacío
  • Copie y pegue el siguiente código en el editor
  • Programar el Arduino UNO
/**
   Mini piano for Arduino.
 
   You can control the colorful buttons with your keyboard:
   After starting the simulation, click anywhere in the diagram to focus it.
   Then press any key between 1 and 8 to play the piano (1 is the lowest note,
   8 is the highest).
 
   Copyright (C) 2021, Uri Shaked. Released under the MIT License.
*/
 
#include "pitches.h"
 
#define SPEAKER_PIN 8
 
const uint8_t buttonPins[] = { 12, 11, 10, 9, 7, 6, 5, 4 };
const int buttonTones[] = {
  NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
  NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
};
const int numTones = sizeof(buttonPins) / sizeof(buttonPins[0]);
 
void setup() {
  for (uint8_t i = 0; i < numTones; i++) {
    pinMode(buttonPins[i], INPUT_PULLUP);
  }
  pinMode(SPEAKER_PIN, OUTPUT);
}
 
void loop() {
  int pitch = 0;
  for (uint8_t i = 0; i < numTones; i++) {
    if (digitalRead(buttonPins[i]) == LOW) {
      pitch = buttonTones[i];
    }
  }
  if (pitch) {
    tone(SPEAKER_PIN, pitch);
  } else {
    noTone(SPEAKER_PIN);
  }
}

Cuando tengas que definir propiedades para múltiples pines de Arduino, puedes hacerlo más fácilmente usando bucles for.

Para configurar los ocho pines como entradas y activar los pull-ups internos, sólo necesitas estas tres líneas de código.

for (uint8_t i = 0; i < numTones; i++) {
    pinMode(buttonPins[i], INPUT_PULLUP);
}

También puede echar un vistazo a la simulaciónaquí.

Proyecto 3: ¿Cómo reproducir tonos en varios pines de Arduino de forma secuencial?

Como has aprendido, la función tone() utiliza el temporizador interno de Arduino para crear una onda cuadrada que impulsa el zumbador.

Puedes conectar varios zumbadores al Arduino y reproducirlos secuencialmente.

1) Conecta tres zumbadores a Arduino UNO

Conecta tres zumbadores a Arduino UNO

También puedes utilizar cualquier otro pin. Yo estoy usando los pines 6, 7 y 8.

2) Programa para accionar tres zumbadores con Arduino

/*
  Multiple tone player
  Plays multiple tones on multiple pins in sequence
  circuit:
  - three 8 ohm speakers on digital pins 6, 7, and 8
  created 8 Mar 2010
  by Tom Igoe
  based on a snippet from Greg Borenstein
  This example code is in the public domain.
  http://www.arduino.cc/en/Tutorial/Tone4
*/

void setup() {
}

void loop() {
  // turn off tone function for pin 8:
  noTone(8);
  // play a note on pin 6 for 200 ms:
  tone(6, 440, 200);
  delay(200);
  // turn off tone function for pin 6:
  noTone(6);
  // play a note on pin 7 for 500 ms:
  tone(7, 494, 500);
  delay(500);
  // turn off tone function for pin 7:
  noTone(7);
  // play a note on pin 8 for 300 ms:
  tone(8, 523, 300);
  delay(300);
}

El código anterior reproduce un tono secuencialmente en los tres zumbadores conectados.

Tenga en cuenta que el retardo dado coincide con la duración del tono en la línea anterior.

3) Arduino Simulación de tres zumbadores ejemplo

Puedes utilizar este enlace para echar un vistazo a la simulación creada en el Simulador Arduino Wokwi.

Arduino Simulación de tres zumbadores ejemplo
Fuente de la imagen: https://wokwi.com

Preguntas sobre proyectos Arduino-Buzzer

Esta sección responderá a las preguntas más frecuentes sobre los zumbadores y Arduino.

Siéntase libre de publicar las preguntas en los comentarios si no están cubiertas.

¿Qué es un Arduino Buzzer?

Un zumbador es un dispositivo de dos pines que genera un tono basado en el código de Arduino. Puede utilizar la función tone() para generar un tono en cualquier pin digital de Arduino.

¿Cómo se enciende el zumbador en Arduino?

Utilice la función tone() para generar el tono. Hay dos opciones para usted.

  • 2 Argumentos - tone(Arduino-pin, Frequency) - Esta función generará el tono en el PIN particular de Arduino mencionado en los argumentos. El tono continuará reproduciéndose hasta que usted lo detenga.
  • 3 Argumentos - tone(Arduino-pin, Frequency, note-duration) - Esto generará el tono para una duración particular

¿Cómo se apaga el timbre en Arduino?

Para detener el timbre, puede utilizar la función noTone(). La función detendrá el tono en marcha si hay alguna función de tono activa.

Si no es así, no tendrá ningún efecto el uso de la función noTone().

¿Cómo se conecta el zumbador a Arduino Mega?

Puedes reutilizar los ejemplos de proyecto para tus proyectos de Arduino Mega y buzzer. El diagrama de conexión será similar para Arduino UNO, Arduino Mega y Arduino Nano también.

conectar el zumbador a Arduino Nano
conectar el zumbador a Arduino Mega

¿Para qué sirve la función noTone()?

La función noTone() detiene el tono en curso. Si no se está reproduciendo ningún tono, esta función no tiene efecto.

Conclusión

En este artículo he mostrado cómo conectar un zumbador a un Arduino. He demostrado las conexiones esenciales y el código de Arduino que necesitarás.

Espero que estés de acuerdo en que los zumbadores son componentes beneficiosos en un proyecto.

Ahora puede añadir con confianza la función de timbre a otros proyectos. He utilizado los pulsadores para controlar la velocidad del ventilador y los patrones de luz en proyectos recientes.

Me encantaría escuchar tus comentarios. ¿Te ha resultado útil este artículo sobre el proyecto Arduino-buzzer? ¿Tienes algún comentario para que este artículo sea más útil?

Por favor, comparta su opinión en la sección de comentarios. Estaré encantado de responder a todos sus comentarios.

No dudes en compartir los proyectos y pedir opiniones.

Estoy seguro de que los zumbadores serán ahora una parte integral de sus futuros proyectos de Arduino. Estaré encantado de saber más al respecto.

Ahora te toca a ti sugerir un tema sobre el que te gustaría aprender a continuación.

No olvides compartir el artículo con tus amigos.

Beau

Tuesday 3rd of January 2023

Good tutorial. Showed me how to deal with stepping through dual arrays with a for loop, had me create my first .h file and use it, and play with the piezo with a melody instead of random tones. If I have one thing to add, its that I find these notes to be more pleasing for the melody over the ones you've provided, but just a personal choice!

int melody[] = { NOTE_G4, NOTE_D4, NOTE_D4, NOTE_E4, NOTE_D4, 0, NOTE_FS4, NOTE_G4 };