[PROJEKT] Prosty robot z czujnikiem odległości Sharp GP2Y0D810Z0F

Nasz robot będzie jeździł do przodu, a gdy pojawi się przed nim przeszkoda w odległości mniejszej niż 10 cm zatrzyma się, następnie obróci się, aby uniknąć zderzenia i będzie kontynuował jazdę (pełen kod programu znajduje się w sekcji do pobrania na końcu artykułu).

Pierwszą czynnością jest deklaracja zmiennej przeszkoda. Przechowywana jest w niej informacja, czy przed robotem znajduje się przeszkoda (wartość 1), czy nie (wartość 0).

Następnie w funkcji obsługi przerwania sprawdzana jest wartość zmiennej przeszkoda. Jeżeli jej wartość jest równa 0, zostanie ustawiona na 1:

Teraz należy uruchomić oba timery, które są użyte do sterowania prędkością silników.

W pętli głównej programu znajduje się kod, dzięki któremu robot porusza się do przodu z 1/4 pełnej prędkości (25% wypełnienia PWM). Następnie w instrukcja warunkowa if sprawdza wartość zmiennej przeszkoda. Jeżeli jej wartość wynosi 1, robot zatrzymuje się na 1 sekundę, obraca się w prawo przez 0,6 sekund, znowu się zatrzymuje i następnie robot jedzie do przodu, aż do momentu, gdy nie pojawi się przed nim jakaś przeszkoda. Zmienna przeszkoda przyjmuje wtedy wartość 0.

Działanie robota zostało pokazane na poniższym materiale wideo:

 

Do pobrania

O autorze