dejmieno Napisano Marzec 13, 2018 Udostępnij Napisano Marzec 13, 2018 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? Cytuj Link do komentarza Share on other sites More sharing options...
deshipu Marzec 13, 2018 Udostępnij Marzec 13, 2018 Bo dźwięk musi dotrzeć do przeszkody i wrócić. 1 Cytuj Link do komentarza Share on other sites More sharing options...
dejmieno Marzec 13, 2018 Autor tematu Udostępnij Marzec 13, 2018 Ehhhh faktycznie 🙂. Kompletnie o tym zapomniałem 🙂. Dzięki wielkie za pomoc 🙂. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!