Mobile
HC-SR04 é um clássico dos módulos de medição de distância para Arduino . Seu sucesso se deve à facilidade e simplicidade de fazê-lo funcionar em projetos do Arduino , PIC ou qualquer outro microcontrolador. Em seu pino de saída, podemos medir a largura do pulso PWM com base na distância do obstáculo.
Conexão
O módulo é alimentado diretamente por Arduino , portanto, não precisamos de uma fonte de alimentação externa.
Os pinos são conectados de acordo com a tabela:
Módulo Pin
Pino de Arduino UNO
Vcc
5V
JOGOU FORA
D2
TRIG
D3
GND
O diagrama é, portanto, o seguinte:
Para gerar o ultrassom, precisamos definir o Trigger Pin em um estado alto por 10 µs. Isso enviará uma explosão sônica de 8 ciclos que viajará na velocidade do som e será recebida no pino de eco. O Echo Pin irá gerar o tempo em microssegundos que a onda de som viajou.
Por exemplo, se o objeto está a 20 cm do sensor e a velocidade do som é 340 m / s ou 0,034 cm / µs, a onda sonora precisará viajar cerca de 588 microssegundos. Mas o que você obterá do pino de eco será o dobro desse número, porque a onda sonora deve viajar para frente e retornar. Portanto, para obter a distância em cm, precisamos multiplicar o valor do tempo de viagem recebido do pino de eco por 0,034 e dividi-lo por 2.
Código
Para o código de programação, devemos primeiro definir o Trigger Pin e o Echo Pin que foram conectados à placa Arduino . Neste projeto, EchoPin é anexado a D2 e TrigPin a D3. Em seguida, defina variáveis para distância (int) e duração (longo).
Abra um novo esboço e cole o seguinte código:
const int EchoPin = 2;
const int TriggerPin = 3;
void setup () {
Serial.begin (9600);
pinMode (TriggerPin, OUTPUT);
pinMode (EchoPin, INPUT);
}
void loop () {
int cm = ping (TriggerPin, EchoPin);
Serial.print ("Distância medida:");
Serial.println (cm);
atraso (1000);
// Cálculos para distância
int ping (int TriggerPin, int EchoPin) {
longa duração, distanceCm;
digitalWrite (TriggerPin, LOW); // para gerar um pulso limpo, definimos LOW 4us
atrasoMicrosegundos (4);
digitalWrite (TriggerPin, HIGH); // geramos gatilho (gatilho) de 10us
delayMicroseconds (10);
digitalWrite (TriggerPin, LOW);
duração = pulseIn (EchoPin, HIGH); // medimos o tempo entre os pulsos, em microssegundos
distanceCm = duração * 10/292/2; // converter para distância, em cm
return distanceCm;
Agora, uma vez que o código é carregado, se abrirmos o Monitor Serial em Ferramentas, podemos ver a distância na qual posicionamos os objetos na frente do sensor. Experimente aumentar e diminuir o zoom.
Por outro lado, uma biblioteca interessante que você pode usar com este módulo é NewPing.h