Brunzidor amb cançó

Aquest projecte tracta d'una protoboard amb cinc pulsadors. El primer servirà per activar una cançó que sonarà per el brunzidor. En cas de que la cançó no estigui sonant, mitjançant els altres quatre pulsadors es podran fer 4 notes musicals diferents. Fins aquí sembla que no hi hagi complicació no? Doncs bé, la complicació arriba alhora de comprendre el circuit elèctric, ja que en aquest projecte s'utilitzarà un circuit mixt. Aquest ciurcuit s'explicarà més endevant.


Abans de tot, passem a construir el circuit per tal d'observar bé com funciona. El materials que necessitarem són:


  • 1xPlaca Arduino UNO
  • 1xProtoboar
  • 1xbuzzer
  • 5xpulsadors
  • 2xresistència 220 ohms
  • 2xresistències 10K ohms
  • 1xresistència 1Mega ohm
  • Cables




Una vegada ja construit el circuit elèctric podem formar que està format per dues parts. La primera és la del primer pulsador ja que proporciona dades al pin 7 de la placa. La segona és la del segon, tercer, quart i cinquè pulsador ja que aquests proporcionen informació al pin A0. Doncs bé, aquesta segona part és el que s'anomena un circuit mixt. Com podeu observar els quatre pulsadors tenen quatre resistències diferents (hi ha un que no en té) i per tant quan es pulsin, no tots emetran el mateix voltatge cap al pin A0. Per tant, funciona de tal manera que quan s'en pulsa un dona un voltatge depenent de la resistència que tingui. I si s'en pulsa dos? Doncs bé si s'en pulsa dos, compta el que té la resistència més alta. Per tan aquest circuit està fet d'una manera per tal de que els quatre pulsadors, independentment del que es pulsi, sempre proporcionaran dades al pin A0. 

Una vegada comprès el cirucuit elèctric, passem a la part de programació. El programa a realitzar és el següent:

int notas[]={262,294,330,349};    //Creem diferents notes amb la funció notas per tal de no crearles una per una
int interruptor=0;                //Creem una variable que guardarà l'estat de l'interruptor

void setup() {

  Serial.begin(9600);             //Inicialitzem el Serial
  pinMode(7,INPUT);               //Diem a la placa que el pin 7 és d'entrada


}

void loop() {

    //Creem una variable que es digui ValorTeclaPulsada, i que guardarà el
    //valor que entri per el pin A0, que és el dels diferents pulsadors.
    int ValorTeclaPulsada=analogRead(A0);

    //Li diem que el valor de la variable interruptor sigui el que entra per el pin 7
    interruptor=digitalRead(7);

  //Li diem que per el serial printi el valor que entra pel pin A0
  Serial.println(ValorTeclaPulsada);

  /*A partir d'aquí li diem que si el pulsador no està pulsat fagi el que hi ha
   a continuació, i si està pulsat que fagi la cançó que hi ha en l'apartat else.
   El que la placa ha de fer quan el pulsador està pulsat és fer una nota o una 
   altre, depenent del voltatge que entri per el pin A0. Per tant si el valor que
   hi entra és 1023 (primer pulsador pulsat), que fagi la nota 0 (262); i així
   amb cada pulsador (menys el primer).
   */
  if(interruptor==LOW){
  if(ValorTeclaPulsada==1023){
    tone(9,notas[0],100);
    }
    else if(ValorTeclaPulsada>=990 && ValorTeclaPulsada<=1010){
      tone(9,notas[1],100);
      }
      else if(ValorTeclaPulsada>=505 && ValorTeclaPulsada<=515){
        tone(9,notas[2],100);
        }
        else if(ValorTeclaPulsada>=5 && ValorTeclaPulsada<=10){
          tone(9,notas[3],100);
          }
          else{
            noTone(8);
          }
    }else{
//Aquesta és la cançó que ha de sonar per el buzzer en cas de que
//el primer pulsador estigui pulsat.    
//NOTA 01 
noTone(9);
tone(9, 523, 10000);
delay(1000);

//NOTA 02
noTone(9);
tone(9, 493, 750);
delay(800);

//NOTA 03
noTone(9);
tone(9, 440, 200);
delay(200);

//NOTA 04
noTone(9);
tone(9, 391, 200);
delay(200);

//NOTA 05
noTone(9);
tone(9, 329, 200);
delay(200);

//NOTA 06
noTone(9);
tone(9, 391, 200);
delay(200);

//NOTA 07
noTone(9);
tone(9, 523, 200);
delay(200);

//NOTA 08
noTone(9);
tone(9, 660, 200);
delay(200);

noTone(9);
delay(650);

//NOTA 09
noTone(9);
tone(9, 700, 200);
delay(250);

//NOTA 10
noTone(9);
tone(9, 700, 200);
delay(250);

noTone(9);
delay(550);

//NOTA 11
noTone(9);
tone(9,700, 200);
delay(250);

//NOTA 12
noTone(9);
tone(9, 700, 200);
delay(250);

noTone(9);
delay(300);

//NOTA 13
noTone(9);
tone(9, 700, 300);
delay(600);

//NOTA 14
noTone(9);
tone(9, 1174, 100);
delay(350);

    }
}

Abans d'acabar, a la imatge inferior podeu veure quina freqüència heu de posar en la funció tone per tal de fer sonar la nota desitjada.



  
Ara ja sabeu com poder controlar un brunzidor i fer música amb Arduino. Per tal de millorar el projecte podeu intentar d'aconseguir que quan es pulsi un dels quatre pulsador quan la cançó està sonant, aquesta s'aturi i soni el to del pulsador que heu pitjat. Com sempre, en el botó inferior podeu descarregar l'arxiu Arduino.




  








Cap comentari:

Publica un comentari a l'entrada

↓↓↓ Si vols deixar un comentari fes-ho aquí ↓↓↓