Misurare la distanza con un sensore ad ultrasuoni HC-SR04 può essere utile in molti progetti per esempio un sistema anti-intrusione che deve far suonare un allarme, un sistema robotizzato che deve evitare ostacoli oppure accendere una luce al passaggio di una persona ecc.
I sensori ad ultrasuoni non forniscono direttamente la misura della distanza dell’oggetto più vicino, ma misurano il tempo impiegato da un segnale sonoro a raggiungere l’oggetto e ritornare al sensore.
L’impulso ad ultrasuoni inviato dal HC-SR04 è di circa 40KHz il tempo viene misurato in microsecondi, la tensione di funzionamento è di 5V, quindi potremo alimentarlo direttamente utilizzando Arduino.
Il sensore HC-SR04 dispone di 4 pin: Vcc (+5V), Trigger, Echo, GND. Il sensore HC SR 04 misura il tempo impiegato dalle onde sonore trasmesse dopo avere incontrato un oggetto che le riflette.
E ora vediamo lo schema di collegamento, ho inserito anche un LED sul Pin 13 che si accende quando la distanza è inferiore a 10cm.
Codice: copia il codice oppure scarica i file qui
#include <LiquidCrystal.h>
const int triggerPort = 7; const int echoPort = 8; const int led = 13; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { pinMode(triggerPort, OUTPUT); pinMode(echoPort, INPUT); pinMode(led, OUTPUT); lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print( "Ultrasuoni "); } void loop() {
digitalWrite( triggerPort, LOW ); //porta bassa l'uscita del trigger
digitalWrite( triggerPort, HIGH ); //invia un impulso di 10microsec su trigger delayMicroseconds( 10 ); digitalWrite( triggerPort, LOW ); long durata = pulseIn( echoPort, HIGH ); long distanza = 0.034 * durata / 2; lcd.setCursor(0, 1); lcd.print("dist.: ");
if( durata > 38000 ){ //dopo 38ms è fuori dalla portata del sensore lcd.setCursor(0, 1); lcd.println("Fuori portata "); } else{ lcd.print(distanza); lcd.println(" cm "); } if(distanza < 10){ digitalWrite(led, HIGH); // accende il led se distanza inferiore a 10 } else{ digitalWrite(led, LOW); } //Aspetta 1000 microsecondi delay(1000); }