#27Iniciante

Medição de distância com HC-SR04 (Monitor Serial)

4.6(46)
71 concluído
Medição de distância com HC-SR04 (Monitor Serial)
O sensor HC-SR04 funciona como um morcego que se orienta no escuro: emite um som que você não consegue ouvir, escuta o eco e mede a distância até o objeto à sua frente. O Arduino escreve essa distância em centímetros na tela do computador a cada meio segundo, mostrando leituras entre 3 e 100 centímetros. É a base de projetos como sensores de estacionamento e robôs que desviam de obstáculos.

Vídeo

Esquema do circuito

Medição de distância com HC-SR04 (Monitor Serial) - Circuit

Código-fonte

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Medição de distância com HC-SR04 (Monitor Serial)
4// ─────────────────────────────────────────
5// Mede a distância com o sensor ultrassônico HC-SR04 e mostra no Monitor
6// Serial, em cm, os resultados entre 3 e 100 cm a cada 0.5 s.
7//
8// Pinos:
9//   D7 -> HC-SR04 Trig
10//   D6 -> HC-SR04 Echo
11//   VCC do HC-SR04 em 5V, GND em GND
12
13int echoPin = 6;        // Entrada do Echo
14int trigPin = 7;        // Saída do Trigger
15int maxDistance = 100;  // Maior distância mostrada (cm)
16int minDistance = 3;    // Menor distância mostrada (cm)
17
18void setup() {
19  pinMode(trigPin, OUTPUT);
20  pinMode(echoPin, INPUT);
21  Serial.begin(9600);
22}
23
24void loop() {
25  // Um pulso de disparo de 10 us envia a rajada de som
26  digitalWrite(trigPin, HIGH);
27  delayMicroseconds(10);
28  digitalWrite(trigPin, LOW);
29
30  // O tempo que o Echo fica em HIGH (us) é o tempo de ida e volta. O som viaja a 0.034 cm/us; a
31  // metade do caminho dá a distância
32  unsigned long duration = pulseIn(echoPin, HIGH);
33  double totalPath = (double)duration * 0.034;
34  int distance = totalPath / 2;
35
36  // Mostra só dentro da faixa válida
37  if (distance > minDistance && distance < maxDistance) {
38    Serial.print("Distance: ");
39    Serial.print(distance);
40    Serial.println("cm");
41  }
42
43  delay(500);   // Espera 0.5 s
44}
45

Perguntas frequentes

Como o HC-SR04 mede a distância?

O sensor emite uma onda sonora de 40 kHz e mede o tempo que o eco leva para voltar. O som viaja pelo ar a aproximadamente 343 m/s; a distância em centímetros é calculada pela fórmula: distância = tempo × 0,0343 / 2 (a divisão por 2 considera a ida e a volta).

Quais são as distâncias mínima e máxima que ele consegue medir?

Na prática, ele mede distâncias de aproximadamente 2 cm a 400 cm. As medições podem estar incorretas ou indicar 0 em distâncias menores que 2 cm, muito grandes ou em superfícies que absorvem som, como tecido ou espuma.

Às vezes, as leituras são 0 ou valores muito altos. Por quê?

Se nenhum eco retornar, `pulseIn` atingirá o tempo limite. Verifique se o sensor está voltado para uma superfície plana e rígida, espere pelo menos 60 ms entre as medições e filtre as leituras incorretas no código.

Posso usá-lo com o ESP32?

O HC-SR04 funciona com 5 V, e seu pino ECHO fornece uma saída de 5 V. Como o ESP32 usa lógica de 3,3 V, você deve colocar um divisor de tensão (por exemplo, 1 kΩ + 2 kΩ) na linha ECHO ou usar o modelo HC-SR04P, compatível com 3,3 V.