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.
Veramente carino questo sensore!! ma oltre all’intensità legge anche l’altezza dell’onda??
cosa intendi per altezza dell’onda? la tensione?
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
no no questo non è in grado di farlo, credo ti serva più un microfono per fare quello
Ottima guida, veramente complimenti… non appena avrò Arduino farò il circuito 😉
Ti ringrazio 😉