Wprowadzenie do kursu Arduino
W następnym artykule UR001 rozpoczynamy kurs Arduino, który bezboleśnie pozwala rozpocząć przygodę z nowoczesną elektroniką i programowaniem. Bardzo ważnym uzupełnieniem, a wręcz nieodłączną częścią tego kursu jest też seria artykułów „Wokół Arduino” o słabo rozgarniętym urzędniku rozpoczynająca się od artykułu UR030 oraz o krokodylu, który jest zupełnie inny, rozpoczynająca się od artykułu PR001.
Zacznijmy od tego, co to jest Arduino. Według polskiej Wikipedii:
Arduino – platforma programistyczna dla systemów wbudowanych oparta na prostym projekcie Open Hardware przeznaczonym dla mikrokontrolerów montowanych w pojedynczym obwodzie drukowanym, z wbudowaną obsługą układów wejścia/wyjścia oraz standaryzowanym językiem programowania. Język programowania Arduino jest oparty na środowisku Wiring i zasadniczo na języku C/C++ (…) Celem projektu Arduino jest przygotowanie narzędzi – ogólnodostępnych, tanich, niewymagających dużych nakładów finansowych, elastycznych i łatwych w użyciu przez hobbystów. (…)
W praktyce platforma Arduino to płytka (płytki) plus dedykowane oprogramowanie i wszystko to ma trzy ogromnie ważne zalety, zwłaszcza dla mniej zaawansowanych:
1 – Dostępne są liczne gotowe do użycia moduły (płytki drukowane). Istnieje wiele modułów podstawowych, zawierających „mniejszy” lub „większy” mikroprocesor, a do tego dosłownie setki modułów rozszerzających, pełniących najróżniejsze funkcje. Moduły takie można kupić zaskakująco tanio. Połączenia między płytką z mikroprocesorem a modułami rozszerzeń nie wymagają lutowania.
2 – Dostępny jest darmowy, nie posiadający żadnych ograniczeń, program na komputer PC z Windows (Linux, OSX), który bardzo ułatwia pisanie programów, przesyłanie ich do mikroprocesora oraz wyszukiwanie błędów i testowanie.
3 – W Internecie dostępnych jest niezliczone mnóstwo gotowych projektów Arduino, zawierających pełną dokumentację: schemat elektryczny, kompletny program oraz fotografie i filmy.
O ile jeszcze kilka lat temu można było zastanawiać się, jak zacząć przygodę z mikrokontrolerami: czy może wykorzystać BASCOM lub uczyć się asemblera, o tyle aktualnie nie ma wątpliwości: warto zaczynać od Arduino. W chwili pisania tego artykułu nie sposób sensownie wykorzystać do tego skądinąd bardzo atrakcyjnego i popularnego języka Phyton.
Trzeba jednak mieć świadomość pewnych konsekwencji i bardzo poważnych pułapek! Co ciekawe, te pułapki na początku wydają się być zaletami. Z grubsza biorąc chodzi o to, że można zrealizować najróżniejsze fantastyczne projekty Arduino nie znając żadnego języka programowania, nie mając pojęcia ani o elektronice, ani o budowie i działaniu mikroprocesora!
Wystarczy znaleźć w Internecie gotowy projekt Arduino, gdzie mamy detaliczną receptę. Bez problemu łączymy moduły, programujemy procesor i po kilku minutach cieszymy się efektem i prezentujemy go innym. Szybko, łatwo i przyjemnie! Wszystko to może się wydawać zaletą. I w zasadzie jest. Dla niektórych chętnych nabycie takich umiejętności korzystania z „gotowców” może być finalnym celem i powodem wystarczającej satysfakcji.
Pułapka polega na tym, że można przyzwyczaić się do takiego podejścia i wyspecjalizować się jedynie w szybkim, bezrefleksyjnym kopiowaniu cudzych projektów bez szans da samodzielność.
Mam jednak nadzieję, że Czytelnicy chcieliby osiągnąć coś więcej: chcieliby tworzyć własne konfiguracje i samodzielnie pisać programy, a przynajmniej świadomie modyfikować cudze projekty i skutecznie dostosowywać je do własnych potrzeb.
Nie jest to łatwe właśnie dlatego, że tworzenie samodzielnych projektów, a nawet modyfikacja cudzych, wymaga obszernej wiedzy, dotyczącej zarówno budowy i działania mikroprocesora, jak też wykorzystywanego języka programowania, w tym przypadku języka C++.
To jest podwójna przeszkoda, trudna do przeskoczenia. Nie można oczekiwać, że znacząca liczba Czytelników najpierw „na sucho” pozna wszystkie zawiłe i obszerne tajniki mikrokontrolerów jednoukładowych oraz jeszcze bardziej zawiłe, obszerne i abstrakcyjne zagadnienia języka C++, a dopiero potem zacznie praktyczne działania z mikroprocesorami. Niewątpliwie najlepiej jest zacząć od praktyki.
Arduino jest (udaną) próbą „zasłonięcia” najtrudniejszych zagadnień z obu wspomnianych dziedzin na rzecz podejścia maksymalnie uproszczonego. Pozwala to szybko i bezboleśnie rozpocząć praktyczne działania i od razu cieszyć się sukcesami. Jednocześnie można i warto zgłębiać wspomniane trudniejsze zagadnienia, bowiem tylko taka bardziej obszerna wiedza i doświadczenie pozwolą osiągnąć samodzielność i dadzą jeszcze większą satysfakcję. Dlatego kurs Arduino będzie miał dwa główne, równoległe wątki:
Pierwszy wątek „uproszczony” pokaże jak rozpocząć przygodę z Arduino i jak korzystać z „gotowców”.
Drugi, znacznie trudniejszy wątek, zawarty w artykułach „Wokół Arduino” będzie niejako odsłaniał kulisy i tłumaczył, co kryje się za na pozór łatwymi projektami i programami (szkicami) Arduino.
Powtórzę jeszcze raz: Arduino to niejako zasłona, która przykrywa mnóstwo skomplikowanych szczegółów, żeby nie straszyć początkujących tym, co jest i co powinno pozostać za tą zasłoną. Jednak aby w pełni wykorzystać Arduino, a potem i inne „mikroprocesorowe” rozwiązania, trzeba uchylić tę zasłonę i stopniowo przebić się zarówno przez wiele zagadnień związanych ze szczegółami budowy i pracy mikroprocesorów, jak też przez najważniejsze reguły języka C, a także C++ (c plus plus).
Właśnie języka C++. Bo tak naprawdę Arduino do programowania mikrokontrolerów jednoukładowych wykorzystuje język C++ z jego ogromną zaletą, jaką jest tak zwana obiektowość. Nie są to zagadnienia zrozumiałe dla zupełnie początkujących, dlatego równolegle z Kursem praktycznym, przedstawione są artykuły o „tępym urzędniku”, w możliwie prosty sposób tłumaczące działanie mikrokontrolera jednoukładowego, a potem artykuły o „krokodylu, który jest zupełnie inny”, przybliżające zupełnie niezorientowanym kluczowe aspekty programowania w trudnym języku C. Gdy stopniowo odsłonimy tę zasłonę, będzie można z większą świadomością wrócić do trudniejszych szczegółów z kursu C.
Aby stopniowo odsłonić zasłonę i zyskać pełną samodzielność, w artykułach wątku „Wokół Arduino” musimy głównie zająć się sprawą programowania. Owszem, omówimy też sprzęt i poznamy szczegóły budowy płytek głównych Arduino, ale to dla nas, elektroników, będzie stosunkowo szybkie i łatwe. Przede wszystkim zajmiemy się jednak „rozszyfrowywaniem” programów Arduino. Są one pisane tak naprawdę w języku C++. A język c plus plus to tak naprawdę język C, tylko rozbudowany o coś ogromnie ważnego, co genialnie ułatwia programowanie. Chodzi o wprowadzenie i wykorzystywanie pojęcia obiektów i klas. Korzystanie z klas i obiektów to najprościej mówiąc, dużo nowocześniejszy sposób programowania, niż programowanie strukturalne w języku C, a tym bardziej w BASCOM-ie czy asemblerze. Zrozumienie i opanowanie programowania obiektowego to wejście na wyższy poziom umiejętności.
Musimy dość dokładnie omówić elementarne zasady programowania obiektowego, ponieważ dotyczy ono nie tylko Arduino, ale i wielu innych przydatnych współczesnemu elektronikowi języków programowania. Ale żeby dobrze zrozumieć sens i zalety programowania obiektowego, musimy wcześniej zrozumieć, czym są obiekty i czym są klasy. W tym celu trzeba przypomnieć niektóre kluczowe zagadnienia z dziedziny programowania i języka C, w szczególności pojęcie funkcji oraz różne typy zmiennych, w szczególności dziwny typ, zwany strukturą. Na życzenie, wyrażone na stronie Zapytaj, Odpowiedz mogę także te zagadnienia przedstawić szerzej.
Jeżeli dopiero zaczynasz, masz przed sobą dużo pracy. Ja ze swej strony dołożyłem starań, żeby podobnie jak to było w przypadku wielu innych moich publikacji, także trudniejsze zagadnienia były podane w sposób maksymalnie przystępny i zrozumiały również dla osób, które nie są programistami.
Praktyczny kurs rozpoczynamy w artykule UR001. Natomiast artykuły „Wokół Arduino” dotyczące programowania znajdziesz pod numerami zaczynającymi się od PR001, a te dotyczące sprzętu – pod numerami zaczynającymi się od UR030.
Jeśli już masz płytkę Arduino Uno R3, taką jak na rysunku tytułowym, to dobrze. A jeżeli takowej płytki jeszcze nie masz, w licznych sklepach internetowych możesz kupić samą płytkę lub większy zestaw Arduino. Ale na razie nie musisz niczego kupować. Problem głównie w tym, że istnieje wiele możliwości zakupu i ceny są różne. Pozyskanie sprzętu drogą kupna to dziś kwestia najwyżej kilku dni, więc możesz wstrzymać się z decyzją. Warto najpierw „na sucho” zapoznać się z pierwszymi odcinkami kursu, a dopiero potem podjęć decyzję, co kupić.
Piotr Górecki