Knock

In questo tutorial usiamo un componente piezoelettrico per rilevare il suono. Un componente piezoelettrico non è altro che un dispositivo elettronico che può sia essere utilizzato per riprodurre i toni sia per rilevare i toni. Un esempio é questo:

Nel nostro tutorial collegheremo il Piezo in uno dei pin di ingresso analogici. Una cosa da ricordare è la loro polarità, hanno di solito un filo rosso e uno nero che indica come collegarlo alla scheda. Colleghiamo il nero a GND e il rosso in un pin analogico, infine dovremo anche collegare una resistenza nel range dei megaohm in parallelo all’elemento piezoelettrico.

Il circuito da fare è il seguente:

La resistenza in parallelo al piezo e nel range dei megaohm mentre la resistenza in serie al led è sempre la solita. Il filo rosso della resistenza di X megaohm và collegata al pin analogico 0.

Ora dobbiamo scrivere il seguente codice:

#define ledPin 13  //Led connesso al pin 13
#define knockSensor 0  //Sensore connesso al pin analogico 0
byte val = 0;  //Variabile per salvare il valore del sensore
int statePin = LOW;  //Variabile usato per salvare l'ultimo stato del led
int THRESHOLD = 100;  //Valore di soglia per decidere quando un suono è stato rilevato da un colpo o non

void setup()
{
     pinMode(ledPin, OUTPUT);  //Dichiaro il ledPin come OUTPUT
     Serial.begin(9600);  //Uso la porta seriale
}

void loop()
{
     val = analogRead(knockSensor);  //Legge il valore del sensore e lo salva
     if (val >= THRESHOLD)
     {
         statePin = !statePin; //Inverte lo stato del pin
         digitalWrite(ledPin,statePin);  //Accende o spegne il led
         Serial.println("Knock!");  //Invia al terminale la scritta
         delay(10);
     }
}

In pratica questo programma serve a rilevare un suono, per esempio potremmo incollare il piezo alla porta e ogni volta che qualcuno bussa, il programma scriverà sul serial monitor la parola Knock! e accenderà un led.

Analisi del codice:

1-Serial(): Per questa funzione ho realizzato un tutorial a parte raggiungibile qui.

Be Sociable, Share!

6 Comments

  1. Alberto scrive:

    Veramente carino questo sensore!! ma oltre all’intensità legge anche l’altezza dell’onda??

  2. ArduinoTutorial scrive:

    cosa intendi per altezza dell’onda? la tensione?

  3. Alberto scrive:

    nel senso di riconoscere l’onda del suono come do,re,mi,fa,sol…

    perchè io vorrei fare tipo un gioco per far impare a cantare i bambini, gli faccio cantare il Do e magari si accende una lampadina oppure faccio schizzare l’acqua… tutte cose cosi

  4. ArduinoTutorial scrive:

    no no questo non è in grado di farlo, credo ti serva più un microfono per fare quello

  5. matrobriva scrive:

    Ottima guida, veramente complimenti… non appena avrò Arduino farò il circuito 😉

  6. ArduinoTutorial scrive:

    Ti ringrazio 😉