Kursy • Poradniki • Inspirujące DIY • Forum
W niektórych przypadkach pomocne mogą okazać się narzędzia, które kosztem wydajności, ułatwiają tworzenie programów. Dobrym przykładem mogą być generatory kodu działające w oparciu o gotowe bloczki reprezentujące jakieś fragmenty kodu. Łącząc takie bloczki możemy szybko zbudować całkiem rozbudowaną aplikację, która będzie działała, ale jej wydajność nie będzie wzorowa. Istnieje kilka środowisk, które stosują takie podejście i w tym artykule sprawdzimy jak działa jedno z nich – XOD.
Wpis polecamy szczególnie osobom, które znają podstawy Arduino z naszego kursu »
Czym jest i jak poznać XOD?
Przygodę ze środowiskiem rozpoczynamy od wizyty na stronie XOD. Dostępne są tam dwie wersje oprogramowania: przeglądarkowa i desktopowa (dla systemów Windows, Linux oraz macOS).
Niezależnie od tego, który rodzaj IDE wybierzemy, to i tak będziemy mieć ten sam zestaw narzędzi i to samo GUI. W tym artykule skupimy się więc na wykorzystaniu wersji z PC. Środowisko z przykładowym "kodem" widoczne jest na poniższym zrzucie ekranu.
Jak wygląda programowanie w XOD?
Na pierwszy rzut oka program może wyglądać skomplikowanie – nie ma tu ani kodu programu, ani bloczków znanych z graficznych generatorów kodu jak S4A. Dysponujemy za to szeroką gamą węzłów (bloczków), które można łączyć na różne sposoby przy pomocy kolorowych sygnałów.
XOD wyróżnia się również sposobem reprezentacji projektu. W przypadku Arduino IDE, możemy wyróżnić główny plik z rozszerzeniem .ino oraz dodatkowe pliki związane z bibliotekami.
Zalety budowy programów z bloczków
W przypadku XOD projekt składa się z obiektów nazywanych patch, co na język polski najczęściej tłumaczy się jako "łata", słowo to można jednak również tłumaczyć jako "skrawek materiału". Ta druga wersja ma w tym przypadku chyba większy sens, więc zwrotów tych będziemy używać zamiennie.
Każda łata może reprezentować zarówno cały projekt wgrywany do mikrokontrolera Arduino, ale też nowy węzeł/bloczek, który może zostać użyty w innym programie. W ten sposób dość skutecznie ukryto mechanizm deklaracji funkcji.
Takie podejście daje też bardzo ciekawą możliwość – tak jak w językach interpretowanych zazwyczaj możliwe jest podejrzenie kodu źródłowego funkcji, tak w XOD poprzez dwukrotne kliknięcie możliwe jest podejrzenie zawartości węzłów. Wiele z nich (szczególnie reprezentujące fizyczne elementy) składa się z połączonych ze sobą prostszych węzłów. Zawartość powyższego bloczku wygląda następująco:
Jak widać na powyższym przykładzie wnętrza węzła am-pm, dodając do skrawka wejścia i wyjścia sygnałów oraz pewną logikę można uzyskać nowy węzeł realizujący określona funkcjonalność.
Ułożenie sygnałów w bloczku węzła określone jest kolejnością wejść i wyjść sygnałów.
Taki sposób dodawania wejść i wyjść usprawnia tworzenie dokumentacji – każdy argument oraz wynik węzła można łatwo opisać. Aby sprawdzić jakie dane przyjmuje i przekazuje na wyjściu dany bloczek wystarczy otworzyć go lub podejrzeć informacje w wyszukiwarce węzłów.
Węzeł może posiadać wiele wejść (ich liczba może być zmienna) oraz wiele wyjść.
Wyszukiwarkę węzłów otwieramy klikając dwukrotnie w obszar roboczy.
Bardzo szybko przekonamy się, że takie podejście może być całkiem wygodne – niejednokrotnie obsługa całego urządzenia sprowadza się do pojedynczego bloczka, z którego można uzyskać gotowe, wstępnie obrobione dane.
Przykładowo, węzeł odpowiedzialny za obsługę czujnika odległości Sharp GP2Y0A21YK0F posiada w swojej budowie węzeł reprezentujący linearyzację wyników pomiaru (który też możemy podejrzeć).
Łatwy sposób na wielozadaniowość
Wspólną cechą charakterystyczną dla graficznych generatorów kodu jak XOD, S4A czy Visuino jest możliwość tworzenia kodu, który imituje działanie równoległe. Przykładowo przy pomocy bloczków można bardzo łatwo zaprogramować Arduino, aby program sterował niezależenie diodami świecącymi, obsługiwał przyciski i wykonywał inne czynności.
W XOD do realizacji czynności okresowych można wykorzystać węzły takie jak clock, który generują impulsy (fioletowy sygnał). Natomiast saw/square/sine/tri-wave odpowiedzialne są za generowanie przebiegów kolejno: piłokształtnego, prostokątnego, sinusoidalnego oraz trójkątnego o wartościach zmiennoprzecinkowych (cyjanowy sygnał).
Warto pamiętać, że w XOD istnieją różne typy sygnałów – można je rozpoznać po kolorach zaczepów w bloczkach lub odczytać z dokumentacji. Nie wszystkie sygnały można ze sobą łączyć!
Przykładowo, aby przy pomocy cyfrowo sterownaej diody NeoPixel (WS2812) uzyskać wielobarwną animację wystarczy do jej 3 kanałów podpiąć wynik bloczka generatora sinusoidy, przemnożony przez odpowiedni współczynnik, odpowiedzialny za maksymalną jasność. Należy też cyklicznie wysyłać dane do diody, na przykład w momencie zmiany wartości na jednym z kanałów.
W wyniku uzyskamy płynną zmianę kolorów diody:
Znaczna komplikacja programów
Choć XOD przyspiesza tworzenie aplikacji na Arduino, to nie jest to jednak idealne narzędzie. Pierwsze utrudnienie, napotkamy tworząc program o bardziej rozbudowanej logice. Aby program był czytelny każdy bloczek, który przejmuje dane z poprzedniego powinien być umieszczony piętro niżej. Powoduje to powstanie bardzo długich łańcuchów, które są ciężkie do przeanalizowania.
W przypadku dużych programów można wprowadzić pewien unikatowy węzeł, który nieco poprawia czytelność – jest to komentarz, czyli węzeł, który zawiera tylko tekst. Nie zmienia on jednak zbyt wiele.
Drugą niedogodnością jest prowadzenie długich sygnałów – połączenia biegną w linii prostej często przecinając inne sygnały i węzły. Niewielką poprawę czytelności wprowadzają magistrale.
Podsumowując, XOD jest unikatową (a nawet egzotyczną) alternatywą dla Arduino IDE i tradycyjnego programowania. Udogodnienie w postaci gotowych węzłów przyspiesza tworzenie aplikacji. Zaś możliwość niezależnego dodawania bloków i tworzenia "równoległych" zadań ułatwia to, co podczas tradycyjnego programowania nastręcza początkującym wiele trudności.
XOD na pewno nie jest dla każdego, warto jednak sprawdzić możliwości tego środowiska i dać mu szansę. Warto przeanalizować kilka gotowych programów, aby zrozumieć ideę. Może akurat dla Was takie zupełnie odmienne podejście będzie wygodniejsze? Dajcie znać w komentarzu, jeśli mieliście już kiedyś styczność z tym środowiskiem! Jakie są Wasze doświadczenia?
PlatformIO – alternatywne środowisko dla Arduino IDE
Jednym z powodów popularności Arduino jest dedykowane środowisko, które znacznie ułatwia pierwsze kroki z mikrokontrolerami. Niestety prosty... Czytaj dalej »
Autor: Piotr Adamczyk
Redakcja: Damian Szymański
To nie koniec, sprawdź również
Przeczytaj powiązane artykuły oraz aktualnie popularne wpisy lub losuj inny artykuł »
arduino, ide, programowanie, xod
Trwa ładowanie komentarzy...