Descripción ADM
Vamos a conectar un buzzer piezoelectrico directamente a arduino, y con ayuda del software correspondiente vamos ha hacer que suene de diferentes maneras
Materiales
Materiales
Placa de Arduino
1 Buzzer piezo eléctrico
Protoboard, cables para las conexiones y el cable USB para conectar el arduino al PC y sirve además de alimentación.
La conexión es tan simple como conectar el negativo de buzzer al GND de arduino y el positivo del buzzer al pín 9 de arduino que además es PWM. Aseguráse que el buzzer está conectado correctamente ya que tiene polaridad, observa en la carcasa de este, tiene marcada una cruz en el pin positivo
Montaje
void setup() {
pinMode(9, OUTPUT);
beep(50);
beep(50);
beep(50);
delay(1000);
}
void loop() {
beep(200);
}
void beep (unsigned char pausa){
analogWrite(9,20);
delay(pausa);
analogWrite(9,0);
delay(pausa);
}
En el setup, designamos el pin 9 como una salida, luego llamaremos 3 veces la función beep() con una pausa de 50, con lo cual sonará 3 pitidos cortos y rápido como aviso, luego se mantendrá en silencio un segundo y comenzará la función loop
En la función loop,se llamará a la función beep con una duración de sus pausa de 200 y se repetirá de forma ininterrumpida. Como resultado tenemos beep de 200 ms con pausas de 200ms.
y finalmente hemos creado una función propia vacía llamada beep, a la que habrá que pasarle un número que es la duración del beep y de la pausa entre beep, que se corresponderá con la variable tipo char sin signo, llamada pausa. Cuando al función sea llamada analogWrite pondrá una señal de ancho de pulso de 20 sobre 255 en el pin 9. Aunque cambies el 20 por cualquier número entre 0 y 255 la diferencia será ínfima. luego se producirá una pausa que determina la duración del beep, luego analogWrite pondrá 0 en el pin 9 con lo que cesará el beep, y hará otra pausa que determinará cuanto tiempo estará en silencio el buzzer y saldrá de la función.
En este segundo código vamos a ver como generar señales de tono variables para conseguir una melodía, utilizando la función tone() de arduino, que genera una señal de la frecuencia indicada dentro del paréntesis, junto al pin de salida y la duración de la misma.
int speakerPin = 9;
int numTones = 12;
int tones[] = {261,277,294,311,330,349,370,392,415,440,466,494};
void setup() {
}
void loop() {
for(int i = 0; i< numTones; i++){
tone(speakerPin, tones[i]);
delay (500);
}
noTone(speakerPin);
}
Hemos creado una primera variable de tipo entero llamada speakerPin y le asignamos el 9 que es el pin de salida de arduino que conectamos al positivo del buzzer. Luego declaramos una segunda variable tipo entero a la que hemos llamado numTones, que contiene el número de tonos que se va a reproducir.
A continuación creamos un array o matriz llamada tones, que contiene las frecuencia de los 12 tonos a reproducir.
El setup en esta ocasión se queda vacío
En el loop tenemos un bucle for que empieza con la variable i en 0, y la irá incrementando 1 con cada repetición y se repetirá mientras la variable i sea menor que la variable global numTones. Con cada iteración o repetición, se ejecutará la instrucción tone por el pin 9 que es la variable speakerPin, con un tono de frecuencia que se corresponda en la posición i dentro de array durante medio segundo por el delay 500. Luego con noTone, silenciaremos el buzzer. y vuelta a empezar.
La variable i de bucle for, determina la posición de un elemento dentro del array, cuando i es igual a 3 sonará el tono con frecuencia 311, luego cuando se repita el bucle, i valdrá 4 y el tono que se reproducirá es el 330 y así sucesivamente. Recuerda que dentro del array, el primer elemento ocupa la posición 0.