Skocz do zawartości

STM32F1 czujnik odległości hc sr04. Wyjaśnienie obliczeń.


dejmieno

Pomocna odpowiedź

Witam,

Chciałem sprawdzić jak działa czujnik odległości na STM32F1. Wzorowałem się na przykładzie z tej strony https://github.com/avislab/STM32F103/blob/master/Example_Sonar/main.c

Wszystko działa ok jednak nie rozumiem jednego. Chodzi o funkcję sonar_get() o numerze linijki 163.

unsigned int sonar_get() {
unsigned long Sonar;
// 354000 - Sound speed (mm/sec)
// 72000000 - F_CPU
// 16 - Timer Prescaler
// Result = mm
Sonar = (354/2) * (unsigned long)SonarValue / (72000 / 72);
if (Sonar > 4000) Sonar = 4000;
if (Sonar < 20) Sonar = 20;

return (unsigned int)Sonar;
}

Nie rozumiem dlaczego facet dzieli prędkość dźwięku przez 2? Resztę rozumiem wartość SonarValue dzieli przez 1000 dzięki czemu zamienia mikrosekundy na milisekundy. Ale po co to 354/2?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.