top of page
Immagine del redattoreRobNico

Arduino misura la distanza

Aggiornamento: 6 mar 2019


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); }

 

61 visualizzazioni0 commenti

Post recenti

Mostra tutti
bottom of page