El siguiente tutorial, tiene como finalidad que se comprenda el uso del Zumbador Buzzer Pasivo Módulo KY-006, ya que a diferencia del Buzzer Activo KY-012 , se tiene que indicar por medio de código a que frecuencia son los tonos que requerimos reproducir.
Para realizar el proyecto necesitaremos:
Diagrama de conexiones
Uso del Buzzer Pasivo en Arduino
Para poder utilizar cualquier tono en nuestro KY-006 en IDE Arduino utilizaremos la función tone(). Esta función genera una onda cuadrada a un ciclo de trabajo del 50%. Las variables que se configuraran es la frecuencia, duración y el pin de salida.
Para trabajar con esta función usaremos las salidas PWM del nuestro Arduino, en nuestro caso para Arduino UNO los pines PWM son: 3,5,6,9-11.
Parte de la sintaxis de la función tone() son:
- tone(pin, frecuencia)
- tone(pin, frecuencia, duración)
Código de Arduino para reproducir tonos aleatorios
Ahora que ya tenemos en cuenta cual es la función que necesitamos para la reproducción de tonos de nuestro Zumbador Buzzer Pasivo, programaremos la reproducción de tonos de frecuencias aleatorias descritas en la variable de entrada tonos[].
intbuzzer = 9; //pin de salida hacia el KY-006 int tonos[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014,956, 834, 765, 593, 468, 346, 224,622 , 715 }; //variedad de tonos de diferentes frecuencias int frec= 16; //cantidad de tonos con frecuencias(son 16 frecuencias) void setup() { pinMode(buzzer,OUTPUT); // El pin 9 anteriormente declarado se configura como salida } void loop() { for (int i = 0; i < frec; i++) { //es un conteo y barrido por las 16 frecuencias registradas de modo aleatorio tone(buzzer,tonos[i],1000); //se reproducirá el tono de la frecuencia en la salida Buzzer=pin9 a una velocidad de 1000 ms } noTone(buzzer); //dejara de emitir el tono de las frecuencias }
Como podemos escuchar la salida, solo son tonos que definimos a frecuencias “aleatorias”, pero ¿Qué pasaría si las mismas frecuencias les diéramos estructura de un tempo y se les asignara notas para la reproducción de alguna melodía?
Código en Arduino para reproducción de “Feliz Cumpleaños”
Con el siguiente programa podremos escuchar tonos que anteriormente escuchamos de forma aleatoria ahora reproduciendo la melodía de “Feliz Cumpleaños”
int int buzzer = 9; //pin de salida hacia el KY-006 int length = 28; // cantidad de notas char notas[] = "GGAGcB GGAGdc GGxecBA yyecdc"; //Las notas de la canción a replicar int beats[] = { 2, 2, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 16 }; int tempo = 110; //velocidad de reproducción entre mas bajo es el valor mas rápido será void repTono(int tone, int duracion) { //función para reproducir tono, declarando la variable de entrada tono y duración for (long i = 0; i < duracion * 1000L; i += tone * 2) { // el tono tendrá una duración de muy larga (L), por esa razón la duración será // hasta 1000L, donde i=tono x 2 digitalWrite(buzzer, HIGH); //el Buzzer cambiara de estado HIGH a LOW dependiendo la... delayMicroseconds(tone); //duración de cada tono digitalWrite(buzzer, LOW); delayMicroseconds(tone); } } void repNota(char nota, int duracion) { //función para reproducir toda la canción, char notas[] = {'C', 'D', 'E', 'F', 'G', 'A', 'B', //declarando variables de entrada nota, duración 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'x', 'y' }; int tonos[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014,956, 834, 765, 593, 468, 346, 224,622 , 715 }; //frecuencia de los tonos int SPEE = 5; for (int i = 0; i < 17; i++) { // tocar el tono correspondiente if (notas[i] == nota) { int nuevaduracion = duracion/SPEE; repTono(tonos[i], nuevaduracion); } } } void setup() { pinMode(buzzer,OUTPUT); // El pin 9 anteriormente declarado se configura como salida } void loop() { for (int i = 0; i < length; i++) { if (notas[i] == ' ') { delay(beats[i] * tempo); // reinicio } else { repNota(notas[i], beats[i] * tempo); } delay(tempo); // pausa entre notas } }
Como podemos observar, el Buzzer Pasivo reproduce los tonos que se programaron desde Arduino.
También te recomendamos el tutorial: Uso del sensor de vibración ky-002 como alarma para reproducir una alerta con el Zumbador Buzzer Pasivo.