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.