Menu
CoddyTech

Czas echa ultradźwiękowego

Część sekcji Wyświetlacze i czujniki ścieżki Arduino w Coddy. Lekcja 18 z 24.

HC-SR04 mierzy odległość jak nietoperz: wysyła dźwięk zbyt wysoki, byśmy mogli go usłyszeć, i mierzy czas powrotu echa. Im dalej znajduje się obiekt, tym dłużej trwa powrót echa.

Ma dwa piny sygnałowe. Krótki impuls HIGH na TRIG powoduje wysłanie dźwięku. Następnie ECHO przechodzi w stan HIGH i pozostaje w nim, aż echo wróci, więc długość tego impulsu HIGH odpowiada czasowi, jaki potrzebował dźwięk.

delayMicroseconds() czeka przez milionowe części sekundy, czyli wystarczająco krótko, by wygenerować impuls wyzwalający trwający 10 mikrosekund. pulseIn(pin, HIGH) czeka, aż pin przejdzie w stan HIGH, i zwraca liczbę mikrosekund, przez które pozostawał w tym stanie. Jeśli w ciągu sekundy nie pojawi się żaden impuls, kończy oczekiwanie i zwraca 0.

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);     // impuls wyzwalający
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);

Echo może trwać do 38000 mikrosekund, czyli dłużej, niż może pomieścić int, więc przechowuj je w zmiennej typu long.

challenge icon

Wyzwanie

Średni

TRIG jest podłączony do pinu 9, a ECHO do pinu 10. W loop():

  • wyślij impuls HIGH o długości 10 mikrosekund na TRIG
  • zmierz echo za pomocą pulseIn(echoPin, HIGH)
  • wyświetl czas za pomocą Serial.println()

Naciśnij Uruchom, przesuń obiekt bliżej i dalej na płytce, a następnie naciśnij Sprawdź.

Spróbuj swoich sił

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  // wyślij impuls o długości 10 mikrosekund na TRIG
  // zmierz czas trwania echa za pomocą pulseIn() i go wyświetl
  delay(200);
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wyświetlacze i czujniki

Poćwicz samodzielnie: Edytor online Arduino