Każdy program Arduino zachowuje się, praktycznie jak standardowy program C++.
W C++ wystarczy komenda:
Zaloguj się, aby zobaczyć kod
aby zaświecić diodę podłączoną do portu PB5 (po uprzedniej inicjalizacji portu).
W Arduino wygląda to następująco:
W programie "Blink without Delay" zapalasz diodę
LED_BUILTIN.
Kliknij prawym przyciskiem myszy na
LED_BUILTIN i wybierz z menu "Go to definition". Przeniesie Cię do pliku
pins_arduino.h. Zobaczysz tam, że
LED_BUILTIN ma wartość 13.
Zaloguj się, aby zobaczyć kod
Jest to wirtualny numer pinu (używany tylko w świecie Arduino).
Zmiana stanu tego pinu (w mikrokontrolerze) odbywa się poprzez wywołanie funkcji
digitalWrite(ledPin, ledState);
"Go to definition" na tej funkcji pokazuje, zawartość, tj.
1) wyszukany zostaje rzeczywisty port mikrokontrolera przypisany do wirtualnego pinu 13
2) wyszukany zostaje rzeczywisty pin mikrokontrolera przypisany do wirtualnego pinu 13
3) następuje zmiana stanu pinu mikrokontrolera
Ad. 1)
Zaloguj się, aby zobaczyć kod
"Go to definition" wskazuje na odczyt elementu z tablicy
digital_pin_to_port_PGM[].
13. pozycja w tablicy
digital_pin_to_port_PGM[], to "PB", czyli 2.
Zaloguj się, aby zobaczyć kod
"Go to definition" wskazuje na odczyt elementu z tablicy
port_to_output_PGM[].
2. pozycja w tablicy
port_to_output_PGM[], to "&PORTB".
Ad. 2)
Zaloguj się, aby zobaczyć kod
"Go to definition" wskazuje na odczyt elementu z tablicy
digital_pin_to_bit_mask_PGM[].
13 pozycja w tablicy
digital_pin_to_bit_mask_PGM[], to "_BV(5)", czyli (1<<5).
Ad. 3)
W zależności od potrzeby zmiana stanu pinu na niski lub wysoki
Zaloguj się, aby zobaczyć kod
Dla każdej płytki Arduino (nano, mega, uno, itd.) stworzone są oddzielne pliki z definicjami. Dlatego zawsze przed kompilacją programu należy wybrać platformę (płytkę Arduino), a kod skompilowany dla jednej płytki Arduino może nie działać na innej.
Czytać, przeglądać, analizować, a będzie zapamiętane.