O HC-SR04 é um sensor ultrassônico que mede distâncias por meio de raios ultrassom. Seu princípio é o mesmo que o de um sonar, ou seja, ele emite um sinal sonoro e calcula o tempo entre a emissão e a recepção do eco.
Material
- Computador
- Arduino UNO
- Cabo USB para ligar o Arduino ao computador
- Sensor de distância ultrassônico HC-SR04
Princípio de funcionamento
O módulo HC-SR04 é composto de um emissor e um receptor por ultrassom. O emissor envia ondas sonoras quando recebe um sinal do comando trigger. Essas ondas são refletidas ao encontrarem um obstáculo. O emissor detecta as ondas refletidas e devolve um sinal para o pino Echo.
Obs: Algumas superfícies possuem maior capacidade de reflexão de ondas sonoras do que outras. Escolha bem o seu sensor em função de como pretende usá-lo.
Esquema de ligação
Código
De acordo com as especificações do sensor, o HC-SR04 pode medir distâncias de 2 a 400 cm. Para isso, precisa enviar um pulso de 10µs para o pino Trigger e medir a duração do pulso de saída no pino Echo (usar pulseIn()). Esta duração dividida por 58 nos dá a distância em centímetros.
#define trigPin 3 #define echoPin 2 long distance; long duration; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { distance=readUltrasonicSensor(); if (distance >= 400 || distance <= 0){ Serial.println("Unknown value"); } else { Serial.print(distance); Serial.println(" cm"); } delay(500);// delay in milliseconds } long readUltrasonicSensor(){ // Send 10µs pulse digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Read pulse duration duration = pulseIn(echoPin, HIGH); Serial.println(duration); //Convert and return value return duration/ 58; }
Obs. Dependendo da versão e do fornecedor do seu sensor, os parâmetros de medição (alcance, conversão) podem ser diferentes. Verifique as informações técnicas do seu equipamento.
Biblioteca
Para simplificar o código, é possível criar uma biblioteca ou baixar e instalar a biblioteca SR04.h (by mrRobot62). O código pode então ser reescrito da seguinte forma:
#include "SR04.h" #define TRIG_PIN 3 #define ECHO_PIN 2 #define LOOPDELAY 1000 SR04 hcsr04 = SR04(ECHO_PIN,TRIG_PIN); long distance; void setup() { Serial.begin(9600); delay(LOOPDELAY); } void loop() { distance=hcsr04.Distance(); Serial.print(distance); Serial.println("cm"); delay(LOOPDELAY); }
Aplicação
Fontes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie