Menu
CoddyTech

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.

challenge icon

Desafio

Médio

TRIG 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);
}
quiz iconTeste seus conhecimentos

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