#27Principiante

HC-SR04 Misura della distanza (display seriale)

4.6(44)
65 completato
HC-SR04 Misura della distanza (display seriale)
Il sensore a ultrasuoni HC-SR04 misura la distanza e visualizza il risultato in cm sul monitor seriale. Insegna il principio del calcolo della distanza con l'onda sonora.

Video

Schema circuito

HC-SR04 Misura della distanza (display seriale) - Circuit

Codice sorgente

Arduino (C++)
1int echoPin = 6;
2int trigPin = 7;
3int maxDistance = 100;
4int minDistance = 3;
5
6void setup() {
7  pinMode(trigPin, OUTPUT);
8  pinMode(echoPin, INPUT);
9  Serial.begin(9600); 
10}
11
12void loop() {
13  digitalWrite(trigPin, HIGH);
14  delayMicroseconds(10);
15  digitalWrite(trigPin, LOW);
16  
17  unsigned long duration = pulseIn(echoPin, HIGH);
18  double totalPath = (double)duration * 0.034;
19  int distance = totalPath / 2;
20  
21  if (distance > minDistance && distance < maxDistance) {
22    Serial.print("Distance: ");
23    Serial.print(distance);
24    Serial.println("cm");
25  }
26  
27  delay(500);
28}

FAQ

In che modo l'HC-SR04 misura la distanza?▾

Il sensore emette un'onda sonora a 40 kHz e misura il tempo di ritorno dell'eco. Il suono viaggia nell'aria a una velocità di circa 343 m/s; la distanza viene convertita in centimetri utilizzando la formula: distanza = tempo × 0,0343 / 2 (la divisione per 2 tiene conto del tempo di andata e ritorno).

Qual è la distanza minima e massima che può misurare?▾

In pratica, misura distanze comprese tra circa 2 cm e 400 cm. A distanze inferiori a 2 cm, a distanze molto grandi o su superfici che assorbono il suono (tessuto, schiuma), la misurazione potrebbe risultare errata o dare un valore pari a 0.

A volte vengono rilevati valori pari a 0 o molto elevati: perché?▾

Se l'eco non ritorna, pulseIn va in timeout. Assicurati che il sensore sia rivolto verso una superficie piana e rigida, attendi almeno 60 ms tra una misurazione e l'altra e filtra le letture errate nel codice.

Posso utilizzarlo con l'ESP32?▾

L'HC-SR04 funziona a 5 V e il pin ECHO fornisce un'uscita a 5 V. Poiché l'ESP32 funziona con logica a 3,3 V, è necessario inserire un partitore di tensione (ad es. 1 kΩ + 2 kΩ) sulla linea ECHO oppure utilizzare il modello HC-SR04P compatibile con 3,3 V.

HC-SR04 Misura della distanza (display seriale) | BlueGrays