Tempo do eco ultrassônico
Parte da seção Displays e sensores do Journey de Arduino da Coddy. Lição 18 de 24.
O HC-SR04 mede a distância como um morcego: ele envia um clique alto demais para ouvirmos e mede o tempo do eco. Quanto mais distante estiver o objeto, mais tempo o eco demora.
Ele tem dois pinos de sinal. Um pulso HIGH curto em TRIG manda o sensor emitir um clique. ECHO então fica HIGH e permanece HIGH até o eco voltar, portanto a duração desse pulso HIGH é o tempo que o som levou.
delayMicroseconds() espera milionésimos de segundo, um intervalo curto o suficiente para o pulso de disparo de 10 microssegundos. pulseIn(pin, HIGH) espera o pino ficar HIGH e retorna por quantos microssegundos ele permaneceu HIGH. Se nenhum pulso chegar em até um segundo, a função desiste e retorna 0.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // o pulso de disparo
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);Um eco pode durar até 38000 microssegundos, mais do que cabe em um int, então armazene-o em um long.
Desafio
MédioTRIG está no pino 9 e ECHO no pino 10. Em loop():
- envie um pulso HIGH de 10 microssegundos em TRIG
- meça o eco com
pulseIn(echoPin, HIGH) - imprima o tempo com
Serial.println()
Pressione Run, mova o objeto para mais perto e mais longe na placa e, em seguida, Check.
Experimente você mesmo
const int trigPin = 9;
const int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// envie um pulso de 10 microssegundos em TRIG
// meça a duração do eco com pulseIn() e imprima o resultado
delay(200);
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Displays e sensores
Pratique por conta própria: Playground de Arduino