Witam
Chciałbym zwrócić się z prośbą o pomoc w obsłudze czujnika odległosci w jezyku C.
W Arduino IDE jest wręcz banalne:
funkcja odpowiedzialna za to:
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Ustawienie poszczególnych pinów oraz opóżnień w C jest dosyć łatwe, natomiast chodzi mi o realizacje funkcji pulseIn czyli funkcji odpowiedzialnej za pomiar długości impulsu.
Posiadam: Atmega328p oraz zewnętrzny rezonator 16Mhz - czyli po prostu programuje arduino pisząc program w C.
Ogólnie chciałbym skorzystać z przerwania zewnętrznego, dlatego też echo pin podłączyłem do INT1.
Obecny kod jest następujący:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Program wykorzystuje przerwania od INT1 i w momencie wykrycia zbocza narastającego, odblokowywane jest przerwanie od timera2, które występuje co 100us, zwiększając licznik. Następnie zachodzi zmiana reakcji ze zbocza narastającego na opadające i w momencie jego wykrycia jest zatrzymywany timer.
Zastosowałem dodatkową zmienna impuls, która przedstawia "proces impulsu"
Jeśli impuls=0, to znaczy, że jeszcze nie wystąpił impuls.
Jeśli impuls=1, to znaczy, że wystąpiło zbocze narastające, czyli impuls trwa dalej i się jeszcze nie zakończył.
Jeśli impuls=2, to znaczy, że wystąpiło zbocze opadające i impuls zakończył się.
Od owej zmiennej uwarunkowałem funkcję sondująca odpowiedzialna za sygnał sondujący, oraz funkcję pomiar, która wysyła informacje tylko w odpowiednich momentach, czyli w momencie kiedy wystąpiło już zbocze opadające echa i sygnał się zakończył.
Niestety program posiada jakieś niedociągnięcia, ale myślę, że idea programu jest dobra.
Z góry dziękuję za pomoc