Skocz do zawartości

Mierzenie odległosci czujnikiem HC-SR04 w C


Pomocna odpowiedź

Napisano

Witam 🙂 Robię robota sumo i jestem zielony jak narazie w programowaniu mikrokontrolerów w C. Ogólnie C znam gdyż pisałem programy komputerowe. Jak sterować takim czujnikiem HC-SR04 bo gdy wyśle sygnał u10 s na port Trig to jak sprawdzić jak długi będzie sygnał powrotny ? Na początku próbowałem znaleźć jakieś biblioteki z funkcjami ale takowych nie ma, a jeżeli jakieś już znalazłem to dla arduino a z niego nie korzystam. Dodam że robię to na atmedze8.

Jeśli masz kod w Arduino, to masz generalnie kod w C.

Zamień sobie tylko digitalWrite() na ustawianie bitów na odpowiednich portach, a delayMicroseconds na __delay_ms i będziesz w domu.

Nie, bo:

1) Arduino to w zasadzie C++, a nie C (chociaż jeżeli biblioteka Ultrasonic korzysta tylko z C, to może przejść),
2) Biblioteka Ultrasonic.h korzysta zapewne z wysokopoziomowych funkcji Wiring (DigitalWrite itp).

Generalnie obsługa takich czujników jest prosta - najprościej zrobić to tak (pseudokod):

int dist;
trigger(); //puszczenie impulsu na pin trigger czujnika
for(dist=0;dist<TIMEOUT;dist++){ //TIMEOUT to 'czas' w mniej-więcej cyklach procesora, po jakim ma przestać czekać, dobrać doświadczalnie
if(echoPin==ODEBRANO){ //nie wiem czy 0 czy 1
break;
} 
}

I po tym kodzie w zmiennej dist powinieneś mieć liczbę odpowiadającą czasowi przelotu fali dźwiękowej. Generalnie ładniej zrobić to na timerach, wtedy procek w tle będzie jeszcze mógł sobie coś robić.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...