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

Gdy już wszystko jest połączone, możemy przystąpić do konfiguracji pinów mikrokontrolera STM32. Do tego celu wykorzystamy znany z poprzednich artykułów program CubeMX. Aby nie tworzyć konfiguracji od początku, skorzystamy z tej, która była wykorzystywana w projekcie [PROJEKT] Sterowanie silnikami – KA-Nucleo-F411CE oraz shield z układem L298. Musimy jedynie dodać pin, do którego jest podłączone wyjście czujnika odległości. Czujnik podłączymy do pinu D2 na KA-Nucleo-F411CE, który odpowiada pinowi PA10 w mikrokontrolerze STM32.

Szczegółowy opis narzędzia CubeMX znajduje się w artykule:

STM32Cube graficzny konfigurator STM32

Uruchamiamy program CubeMX, a następnie otwieramy plik projektu z [PROJEKT] Sterowanie silnikami – KA-Nucleo-F411CE oraz shield z układem L298.

Gdy robot zbliży się do przeszkody, powinno pojawić się przerwanie od tego zdarzenia. Dlatego pin (PA10), do którego podłączone jest wyjście czujnika odległości ustawimy w tryb generowania przerwania. Klikamy na niego, a następnie wybieramy opcje GPIO_EXTI10 (rysunek 5).

 

Rysunek 5. Wybieranie roli pinu, do którego został podłączony czujnik odległości

Teraz przechodzimy do zakładki Configuration, następnie w sekcji System wybieramy GPIO (rysunek 6).

Rysunek 6. Wybór ustawienia portów GPIO

W momencie gdy czujnik odległości wykryje przeszkodę, to na jego wyjściu pojawi się stan niski. Z tego powodu przerwanie powinno być generowane, gdy wystąpi zbocze opadające. Dlatego w GPIO mode z rozwijanej listy wybieramy opcję External Interrupt Mode with Falling edge trigger detection, jak na rysunku 7.

 Rysunek 7. Wybór trybu przerwania na pinie PA10 

Pozostało jeszcze włączyć obsługę przerwań. W tym celu przechodzimy do ustawień przerwań NVIC:

Rysunek 8. Ustawienia przerwań – zakładka NVIC

Pojawi się okno, w którym musimy zaznaczyć opcje, która uruchomi obsługę przerwań – EXTI line [15:10] interrupt (rysunek 9).

Rysunek 9. Włączenie obsługi przerwań dla pinu PA10 

Wybór akceptuje się przyciskiem Apply, następnie klikamy w przycisk Ok.

Teraz musimy zmienić nazwę naszego projektu i wygenerować kod programu środowiska AC6. W tym celu wybieramy z menu w górnej cześć okna, File >> Save Project As. Zmieniamy nazwę naszego projektu, np. na KA_Nucleo_Robot, wybieramy folder workspace programu AC6 (2) oraz wybieramy Toolchain SW4STM32 (3) i klikamy Ok (rysunek 10).

Rysunek 10. Zmiana nazwy projektu oraz zapis w folderze programu AC6

Teraz pozostało nam wygenerować projekt. W tym celu klikamy na Project >> Generate Code.

Otwieramy program AC6 i importujemy zapisany przed chwilą projekt.

Do pobrania

O autorze