Arduino: software do zderzaków – przerwania

Zmodyfikowana wersja softu ze zderzakami – tym razem użyłem przerwań i w przypadku kliknięcia przeszkody – w przerwaniu zmieniam pomocniczą zmienną informującą o konieczności cofnięcia i zmiany kierunku ruchu. Działa nieźle.

Poprzednia wersja softu prowadziła pojazd w danym kierunku z wykorzystaniem funkcji delay(ileś-tam), a dopiero potem sprawdzała przyciski (mikrostyki) – to powodowało, że gdy zderzenie nastąpiło w czasie jazdy, to takie zdarzenie mogło nie być zarejestrowane (nie zawsze się zdarzało, że przycisk pozostawał wciśnięty po zakończenia delay). Tutaj rozwiązałem to za pomocą dwóch przerwań… wiem – za dużo, już w głowie mam lepszy algorytm, bez przerwań, ale to w następnym odcinku.

Dla bardziej dociekliwych:

#define LEFT_BTN 2
#define RIGHT_BTN 3

(w przypadku Arduino UNO przerwania tylko dla pinów 2 i 3), dalej:

pinMode(LEFT_BTN, INPUT_PULLUP);
pinMode(RIGHT_BTN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(LEFT_BTN), turn_right, LOW);
attachInterrupt(digitalPinToInterrupt(RIGHT_BTN), turn_left, LOW);

to w setup()ie,

a dwie funkcje turn_left() i turn_right() zmieniają pomocnicze zmienne nakazujące zmianę kierunku ruchu (w funkcji loop).

 

Posted in FiBot.