Arduino

Sensore di prossimità ad ultrasuoni HC-SR04

Alessandro Oppo 3 min di lettura

Ben ritrovati su 9minuti.it, oggi vedremo quello che è, a mio parere, uno dei sensori ad ultrasuoni più versatili e divertenti da usare, ovvero il sensore di prossimità (o di distanza) HC-SR04.

Il sensore ad ultrasuoni HC-SR04 è composto da due ‘occhioni’, uno dei quali invia un’onda sonora, la quale rimbalza sulla superficie che si trova davanti e viene letta dall’altro ‘occhio’.

Se mi chiedessero quali sono i limiti del sensore ad ultrasuoni HC-SR04 risponderei che non fa il caffè.

Un limite che ho riscontrato, oltre ovviamente a non passare i vetri e non fare il caffè, cosa piuttosto ovvia, è che se posto contro una superficie molto irregolare, come ad esempio un maglione di lana a maglie larghe, smette di funzionare.

La lana infatti assorbe le onde e impedisce a queste di tornare indietro.

La precisione è notevole e su distanze di circa un paio di metri ha una tolleranza di pochi centrimetri.

Il collegamento

 

Sensore di prossimità ad ultrasuoni HC-SR04
Sensore di prossimità ad ultrasuoni HC-SR04

Lo sketch

Passiamo ora allo sketch e alla spiegazione riga per riga.

#define ultrasuoni_out 13
#define ultrasuoni_in 12
float durata;
float distanza;

void setup() {

pinMode(ultrasuoni_out, OUTPUT); pinMode(ultrasuoni_in, INPUT);

Serial.begin(9600); }

void loop() {

digitalWrite(ultrasuoni_out, HIGH); delay(10); digitalWrite(ultrasuoni_out, LOW);

durata = pulseIn(ultrasuoni_in, HIGH); distanza = 0.034 * durata / 2;

Serial.print(distanza); Serial.print(” cm\n”);

delay(100); }

1 – Definiamo il pin 11 con il nome ultrasuoni_out
2 – Definiamo il pin 12 con il nome ultrasuoni_in
3 – Creiamo la variabile di tipo float durata
4 – Creaiamo la variabile di tipo float distanza
8 – Dichiariamo che il pin ultrasuoni_out verrà usato come OUTPUT
9 – Dichiariamo che il pin ultrasuoni_in verrà usato come INPUT
11 – Chiamiamo il metodo begin() dell’oggetto Serial per far partire la comunicazione seriale.
16 – Accendiamo il pin ultrasuoni_out
17 – Delay di 10 millisecondi
18 – Spegnamo il pin ultrasuoni_out
20 – Assegnamo alla variabile durata il valore restituito dalla funzione pulseIn(), la quale tiene conto del tempo in millisecondi da quando il pin è su HIGH e poi nuovamente su LOW. Se vi interessa approfondire QUA ci sono maggiori informazioni.
21 – Sapendo qual è la velocità del suono (0.034) e il tempo che le onde sonore hanno impiegato (durata) possiamo ricavare la distanza percorsa. Dividiamo per due perché abbiamo sia un’andata che un ritorno.
23, 24 – Facciamo una stampa sul Serial Monitor della nostra distanza appena calcolata.
26 – Delay di 100 millisecondi

Divertiamoci con il sensore di prossimità ad ultrasuoni

Non ci resta altro da fare, ormai abbiamo capito come utilizzarlo e lo possiamo impiegare in uno dei nostri progetti con Arduino.

Un esercizio carino che prevede l’utilizzo di questo sensore consiste nel illuminare un led a seconda di quant’è la distanza, utilizzando quindi gli if e gli else.

Ad esempio,

if ( distanza < 50){
   digitalWrite(13, HIGH);
}

else{ digitalWrite(13, LOW); }

Ovviamente dobbiamo ricordarci di aggiungere il pin 13 come OUTPUT nel setup().

Se ti è piaciuto l’articolo ti prego di farmelo sapere nei commenti e di condividerlo sulle tue pagine social in modo da supportare il blog.

Vi ringrazio per l’attenzione e rimango a disposizione per aiutarvi nel caso doveste averne bisogno.

Alessandro

Leggi anche

Arduino

Minivocabolario: i parametri

In questa breve guida ti spiegherò cosa sono i parametri, in particolar modo applicate alla programmazione del micro controllore Arduino. Parametri Vediamo ora i parametri e per farlo ci lanceremo immediatamente con…