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:

42259024

 

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:

Immagine-160x300

 

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.