BUZZER 5v

BUZZER

A continuación, se desarrollará la reproducción de un sonido de un videojuego popular mediante un pulsador y diodos led, se desarrollará con el lenguaje de programación IDE ARDUINO UNO.

MATERIALES

  • Cable USB
  • Protoboard
  • Cables para conectar el circuito
  • Un computador
  • Una tarjeta Arduino UNO
  • Resistencias (330Ω)
  • Buzzer
  • Pulsador
  • Diodos leds

 

                

                

                 

                               

PROCEDIMIENTO

Antes de comenzar el montaje del circuito, se debe tener en cuenta la polaridad del diodo led ánodo conectado en el pin correspondiente (+) y el cátodo a GND (-) definido como salida(OUTPUT) y un pulsador (conectado en el pin 5) definido como entrada(INPUT).

Para el Buzzer ya tiene la polaridad definida el pin que corresponde al positivo (+) es conectado como salida en la placa ARDUINO y el negativo (-) a GND.

Podemos observar que se emplea la tarjeta Arduino UNO, un protoboard usado para la conexión de componentes electrónicos y cables para el armado de circuitos electrónicos.

CIRCUITO ESQUEMÁTICO

CODIFICACIÓN DEL PROGRAMA

Inicialmente se indica el nombre del programa a desarrollar en esta oportunidad tiene como nombre “BUZZER”.

Definimos la variable con el comando “ const int” el pin “13 – 2 – 3 – 4 – A0” con una etiqueta llamada pulsador, led,led1,led2 y buzzerPin correspondientemente, posteriormente creamos una variable “i” , TONOS que es la canción q se reproducirá por el Buzzer, también dNOTA que corresponde a la duración de cada TONO que se reproducirá y finalmente el numNOTA es la cantidad de las notas que tenemos en los TONOS.

 int i=0;                                                                             // Declarando variable i 
 const int pulsador=13;                                                               // Declarando pin5 con nombre pulsador
 const int led = 2;                                                                   // Declarando pin13 con nombre led
 const int led1 = 3;                                                                  // Declarando pin13 con nombre led
 const int led2 = 4;                                                                  // Declarando pin13 con nombre led
 const int buzzerPin = A0;
 
 int TONOS[] = {                                                                      // Notas en Octava 4 representado en valor de sus frecuencias                                                           
  261*8,261*8,440*8,493*8,261*8,293*8,261*8,493*8,440*8,391*8,                        // multiplicado cada una por 8 para escucharlo rapidamente 
  440*8,440*8,349*8,391*8,440*8,466*8,440*8,391*8,349*8,329*8,
  146*8,146*8,349*8,293*8,261*8,349*8,
  391*8,440*8,446*8,440*8,391*8,349*8,391*8,349*8,349*8,329*8,349*8,
  391*8,293*8,293*8,293*8,293*8,293*8,261*8,466*8,261*8,293*8,261*8,
  329*8,261*8,261*8,261*8,261*8,261*8,466*8,440*8,466*8,261*8,466*8,
  391*8,440*8,440*8,391*8,349*8,391*8,349*8,391*8,440*8,
  261*8,466*8,261*8,293*8,

  261*8,261*8,440*8,493*8,261*8,293*8,261*8,493*8,440*8,391*8,
  440*8,440*8,349*8,391*8,440*8,466*8,440*8,391*8,349*8,329*8,
  146*8,146*8,349*8,293*8,261*8,349*8,
  391*8,440*8,446*8,440*8,391*8,349*8,391*8,349*8,349*8,329*8,349*8,
  391*8,293*8,293*8,293*8,293*8,293*8,261*8,466*8,261*8,293*8,261*8,
  329*8,261*8,261*8,261*8,261*8,261*8,466*8,440*8,466*8,261*8,466*8,
  391*8,440*8,440*8,391*8,349*8,391*8,349*8,391*8,440*8,
  261*8,466*8,261*8,293*8};
                  
int dNOTA[] = {                                                                       // Duracion de los tonos musicales 
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,

  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,
  16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4,16/4};

int numNOTA = 144;                                                                    // El numero total de notas musicales

En la parte del void setup () definimos las salidas como entradas y la configuración de la velocidad de transmisión de datos con el comando Serial.begin() en esta parte la configuraremos con 9600. Definimos la entrada pinMode(pulsador,INPUT) y la salida pinMode(buzzerPin,OUTPUT) de igual procedimiento para los leds(led,led1 y led2) que actuaran como salida.

void setup() {
   Serial.begin(9600);                                                                // Configura la velocidad serial
   pinMode(pulsador,INPUT);                                                           // Declarando pulsador como entrada
   pinMode(led,OUTPUT);                                                               // Declarando led como salida
   pinMode(led1,OUTPUT);                                                              // Declarando led1 como salida
   pinMode(led2,OUTPUT);                                                              // Declarando led2 como salida
   pinMode(buzzerPin, OUTPUT);
   }

En la parte siguiente del código en void loop () se codifica las acciones que va realizar para el pulsador en este proyecto el pulsador tiene una gran importancia.

Se define una condición leyendo si el pulsador está en un valor 0 si se cumple se incrementará la variable i a su misma vez en la condición se ejecuta otra, pero igualando a 2 nuestra variable si se cumpliese tal condición nuestra variable i tomaría el valor de cero i = 0.

Con el comando de Serial.print (”  “) enviamos lo que deseamos que aparezca en el monitor serial y de otro formal enviar el valor de i con el comando Serial.print(i).

void loop() {
   if(digitalRead(pulsador)==0)                                                       // Si se preciona pulsador 
   {  
     i=i+1;                                                                           // Contador de cuantas veces se presiona el pulsador
     if(i>=2)                                                                         // Si es mayor igual que 2 entonces inicializa la variable i=0 
     {i=0;}
  
   Serial.print("i: ");                                                               // Envia el caracter i al monitor serial
   Serial.print(i);                                                                   // Envia el valor i
   Serial.println(" intento");                                                        // Envia la palabra intento
   delay(500);                                                                        // Retardo de medio segundo

Realizamos un código anti rebote que no hace nada y que no ejecuta ningún código

while(digitalRead(pulsador)==0)                                                       // Codigo antirrebote, no hace nada
   {}                                                                                 // No ejecuta ningun codigo

Se propone una condición con el comando if si el valor de la variable i = 1, si el valor es correcto activamos el buzzer con el comando tone(buzzerPin,10) en donde el valor 10 representa al valor de la frecuencia con que se reproducirá el buzzer, también de encenderán los leds(led) y se apagarán los leds (led1 y led2).

Caso contrario el comando else si se presiona por segunda vez el pulsador ejecutara la melodía se enciende el led1 y se apaga el led.

Creamos una variable t en un bucle for  de la siguiente manera for(int t = 0; t < numNOTA; t++) queriendo decir q la variable de comienza desde 0 hasta el valor de numNOTA. Posteriormente creamos otra variable int duracion, luego reproducimos los tonos con el buzzer tone(buzzerPin,TONOS [t], duracion) con un retardo delay(duracion) y finalmente desactivamos el buzzer noTone(buzzerPin).

Se encenderá el led2 para poder identificar que todos los tonos ya se reprodujeron.

if(i==1)                                                                         // Si se presiona la primera vez , se enciende el led
     {tone(buzzerPin,10);                                                             // sonido del Buzzer con frecuencia en particular
      digitalWrite(led,HIGH);                                                         // led encendido
      digitalWrite(led1,LOW);                                                         // led1 apagado
      digitalWrite(led2,LOW);                                                         // led2 apagado
     }     
     else{                                                                            // Si se presiona por segunda vez ejecuta la melodia
     digitalWrite(led1,HIGH);                                                         // led1 encendido  
     digitalWrite(led,LOW);                                                           // led encendido
     
      for(int t = 0; t < numNOTA; t++){                                               // creamos variable "t" 
      int duracion = 1500 / dNOTA[t];                                                 // creamos variable duracion 
      tone(buzzerPin, TONOS[t], duracion);                                            // sonido del Buzzer activado con todos los TONOS
      delay(duracion);                                                                // delay con valor de la duracion por cada TONO
      noTone(buzzerPin);                                                              // sonido del Buzzer desactivado
      }
      digitalWrite(led2,HIGH);                                                        // led2 encendido indica q ya ejecuto todos los TONOS                                               
     }       
   } 
 }

IMAGEN DEL CIRCUITO FINAL 

Share this Post!

About the Author : EderPM


1 Comment
  1. Genericcialis 5 abril, 2018 at 6:04 am - Reply

    Gracias por mencionarnos Regina! 🙂generic cialis

Enviar un comentario

Your email address will not be published.