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.
Sfida
MedioTRIG è 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);
}
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