[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.