Menu
CoddyTech

Tempo dell'eco ultrasonico

Fa parte della sezione Display e sensori del percorso Arduino di Coddy. Lezione 18 di 24.

HC-SR04 misura la distanza come un pipistrello: invia un clic troppo acuto perché possiamo sentirlo e misura il tempo dell'eco. Più l'oggetto è lontano, più tempo impiega l'eco.

Ha due pin di segnale. Un breve impulso HIGH su TRIG gli dice di emettere un clic. ECHO passa quindi a HIGH e rimane HIGH finché l'eco non ritorna, quindi la durata di quell'impulso HIGH è il tempo impiegato dal suono.

delayMicroseconds() attende per milionesimi di secondo, un intervallo abbastanza breve per l'impulso di attivazione di 10 microsecondi. pulseIn(pin, HIGH) attende che il pin passi a HIGH e restituisce per quanti microsecondi è rimasto HIGH. Se entro un secondo non arriva alcun impulso, rinuncia e restituisce 0.

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);     // l'impulso di attivazione
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);

Un'eco può durare fino a 38000 microsecondi, più di quanto possa contenere un int, quindi salvala in un long.

challenge icon

Sfida

Medio

TRIG è sul pin 9 ed ECHO sul pin 10. In loop():

  • invia un impulso HIGH di 10 microsecondi su TRIG
  • misura l’eco con pulseIn(echoPin, HIGH)
  • stampa il tempo con Serial.println()

Premi Esegui, avvicina e allontana l’oggetto sulla scheda, quindi premi Controlla.

Provalo tu

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // invia un impulso di 10 microsecondi su TRIG
  // misura la durata dell'eco con pulseIn() e stampala
  delay(200);
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Display e sensori

Esercitati da solo: Playground Arduino