Kurs Arduino cz. 1 – Początki, czyli miganie diodą
Arduino, jak już pisałem w poprzednim artykule, jest bardzo ciekawą platformą, którą możemy wykorzystać do tworzenia własnych urządzeń. Praca z nią jest stosunkowo prosta – by zacząć nie trzeba mieć nawet lutownicy, ani wiedzy o programowaniu mikrokontrolerów. Wszystko jest przygotowane tak, że nawet początkujący mogą pisać naprawdę ciekawe programy. Poprzedni kurs elektroniki do dziś cieszy się zainteresowaniem, dlatego postanowiłem pisać nieformalną kontynuację w postaci kursu Arduino. Mikrokontrolery są coraz częściej spotykane i wiele ułatwiają, dlatego warto wiedzieć jak się je programuje.
Sprzęt i oprogramowanie
Kurs będzie oparty o płytkę Arduino Uno, ale inne kompatybilne z standardem Arduino również powinny się nadać, choć mogą być wtedy potrzebne drobne zmiany w kodzie. Więcej informacji możesz zdobyć w poprzednim wpisie opisującym platformę Arduino.
Do zaprogramowania Arduino będzie potrzebne specjalnie przygotowane oprogramowanie. W zależności od używanego systemu instalacja i konfiguracja wygląda nieco inaczej. Ja sprawdziłem pod tym względem dwa systemy, ale Arduino IDE można uruchomić pod kontrolą praktycznie każdego liczącego się systemu.
Windows
W przypadku Windowsa trzeba się trochę napracować. Przede wszystkim musimy odwiedzić stronę projektu Arduino i pobrać archiwum z programem:
http://arduino.cc/en/Main/Software
Po wypakowaniu go i podłączeniu płytki trzeba dodatkowo zainstalować sterownik, co jest tutaj dosyć dokładnie wyjaśnione:
http://arduino.cc/en/Guide/UnoDriversWindowsXP
Ubuntu
Z tego systemu korzystam na co dzień i tutaj jest zdecydowanie mniej roboty – oprogramowanie dla Arduino można zainstalować z pomocą Centrum Oprogramowania za pomocą kilku kliknięć, a sterownika nie trzeba instalować osobno.
Po zainstalowaniu oprogramowania
Gdy już mamy Arduino IDE, należy go uruchomić. Przy pierwszym włączeniu lub próbie zaprogramowania mikrokontrolera, pokaże się pewnie okno, w którym możemy wybrać typ posiadanej płytki i zmieć parametry komunikacji z nią. Jeśli takie okienko nie pokazałoby się, potrzebne opcje możemy zmienić z pomocą menu Tools.
Pierwszy program, pierwszy układ
Programy dla Arduino piszemy z użyciem języka bardzo przypominającego C++ – dokładniej jest to C++, ale nieco okrojony z funkcjonalności i podlegający kilku przekształceniom przed kompilacją. To w sumie nieważne, choć jako ciekawostka pewnie zainteresuje osoby mające już coś wspólnego z programowaniem. Postaram się wszystko tłumaczyć tak, aby każdy zrozumiał, nawet jeśli nie miał styczności z mikrokontrolerami i programowaniem.
Zadaniem naszego pierwszego programu będzie coś prostego – miganie diodą LED podłączoną do Arduino. Oto on:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup() { // pin 8 ma pracowac jako wyjscie pinMode(8, OUTPUT); } void loop() { // wlaczenie diody digitalWrite(8, HIGH); // odczekanie pol sekundy delay(500); // wylaczenie diody digitalWrite(8, LOW); // odczekanie pol sekundy delay(500); } |
Można go skopiować, wkleić w Arduino IDE i wysłać do mikrokontrolera, ale jeszcze nie zobaczysz żadnych efektów, poza migotaniem diód sygnalizujących przesył danych podczas programowania. Najpierw podłączmy niezbędne elementy, potrzebne będą:
- Arduino,
- Płytka stykowa,
- Dwa przewody połączeniowe,
- Dioda LED,
- Rezystor (w zakresie ok. 100-500 omów)
Jeśli masz już Arduino, to znalezienie pozostałych elementów nie powinno Ci sprawić żadnego problemu. Z płytki prototypowej nie musisz korzystać, choć jest to wygodne i będziemy jej używać w następnych częściach kursu, więc warto się w nią zaopatrzyć. Jak to wszystko połączyć pokazuje poniższy obrazek:
Po podłączeniu diody i wgraniu programu (ikona ze strzałką), dioda powinna zacząć zapalać się i gasnąć w półsekundowych odstępach. Jeśli masz problem z zaprogramowaniem, zadaj pytanie w komentarzu lub załóż nowy temat na forum, a postaramy się pomóc – początki bywają najtrudniejsze, a nie wszystko da się wytłumaczyć w kursie.
Struktura programu
Wklejenie gotowego programu i zaprogramowanie nim mikroprocesora to nie problem, trochę trudniejsze może być zrozumienie jego działania, szczególnie jeśli ktoś nie miał jeszcze do czynienia z programowaniem.
Programy dla Arduino składają się z dwóch bloków – setup i loop. Są to funkcje, które muszą się znaleźć w kodzie programu. Funkcja setup jest wywoływana na samy początku, zaraz po uruchomieniu programu, a kod zawarty w funkcji loop jest wywoływany po niej i powtarzany tak długo, jak to jest możliwe (aż do wyłączenia zasilania).
Czym jest funkcja?
Funkcja to zdefiniowany wcześniej fragment programu, który możemy później wywoływać w różnych miejscach programu. W przypadku Arduino wiele funkcji znajduje się w bibliotece standardowej i są od razu dostępne do użycia. W naszym programie użyliśmy kilku takich funkcji oraz utworzyliśmy dwie wcześniej wspomniane – setup i loop.
Sposobu tworzenia funkcji można się łatwo domyślić, ale tutaj podaje ogólny przepis:
1 2 3 4 5 6 7 8 9 10 11 |
TYP_ZWRACANY nazwaFunkcji(PRZYJMOWANE PARAMETRY) { POLECENIA REALIZOWANE PRZEZ FUNKCJE; } //----------------------- void setup() { // pin 8 ma pracowac jako wyjscie pinMode(8, OUTPUT); } |
Weźmy za przykład funkcję setup. TYP_ZWRACANY nas póki co nie interesuje, zajmiemy się tym w jednej z następnych lekcji, dzisiaj chcę tylko podać informacje niezbędne do zrozumienia tego jak działa język programowania. Nazwą funkcji jest oczywiście setup. Następnie w nawiasach znajduje się lista przyjmowanych przez funkcję parametrów – w naszym przykładzie nie ma ich wcale, ale występują w standardowych funkcjach, których używamy w programie. Kolejnym elementem jest blok kodu ograniczony nawiasami klamrowymi – polecenia zawarte wewnątrz niego są po kolei wykonywane w momencie wywołania funkcji.
Jak wygląda takie wywołanie? Kontynuujmy na przykładzie funkcji setup, w której znajdują się dwie linie. Pierwsza z nich, rozpoczynająca się od dwóch ukośników “//” to komentarz, nie jest on brany pod uwagę przy przetwarzaniu programu, służy do zapisywania informacji dla człowieka, programisty. Druga linijka to właśnie wywołanie funkcji. Najpierw podajemy jej nazwę – pinMode, a następnie w nawiasie listę wartości parametrów przyjmowanych przez funkcję. Na końcu instrukcji znajduje się średnik. Jeśli średnika nie będzie, program się nie skompiluje i nie pomigamy sobie diodą.
Funkcje użyte w programie
W programie użyliśmy trzech funkcji standardowych, dostępnych od razu w bibliotekach Arduino:
1 |
pinMode(NUMER_PINU, TRYB_PRACY) |
Mikrokontrolery AVR do poprawnej pracy wymagają podania sposobu wykorzystywania wyprowadzenia. Funkcja pinMode służy do informowania o tym, w jaki sposób będziemy używać danego wyprowadzenia i wymaga podania dwóch parametrów. Pierwszy z nich to liczba, która mówi którego pinu ma dotyczyć konfiguracja, a drugi to jeden z trybów pracy:
- INPUT – wyprowadzenie pracuje jako wejście (INPUT_PULLUP dodaje rezystory podciągające – to informacja dla bardziej zaawansowanych),
- OUTPUT – wyprowadzenie pracuje jako wyjście.
1 |
digitalWrite(NUMER_PINU, STAN) |
Aby zapalić lub zgasić diodę użyliśmy funkcji digitalWrite. Podobnie jak w poprzedniej funkcji, pierwszym parametrem jest numer wyprowadzenia. Drugi to natomiast stan do ustawienia:
- HIGH – stan wysoki, ok 5V,
- LOW – stan niski, ok 0V.
1 |
delay(CZAS) |
Mikrokontrolery AVR, choć nie są demonami prędkości, potrafią wykonywać kilkanaście milionów operacji na sekundę. To bardzo dużo, choć w porównaniu do komputerów, czy nawet nowoczesnych komórek żałośnie mało. Nasz prosty programik wykorzystuje naprawdę drobną część możliwości procesora. Co więcej, musimy go nieco zwolnić. I własnie do tego służy funkcja delay. Zajmuje ona procesor na podany czas. Warto zaznaczyć, że czas podajemy w milisekundach, tysięcznych częściach sekundy.
Na koniec
Przede wszystkim zachęcam do eksperymentowania! Przy pomocy tych trzech funkcji można wykonać naprawdę wiele ciekawych urządzeń. Na początek polecam podłączyć kilka diod LED i zapalać je w różnej kolejności. Możesz też podłączyć buzzer z generatorem i powydawać nieco głośnych dźwięków. To będą proste programiki, ale wiem, że mogą sprawić sporo radości, a przy okazji czegoś nauczyć.
Zapraszam do czytania następnych części i mam nadzieję, że znajdę trochę czasu i pojawią się one szybciej niż ta :). Żeby nie przegapić nowości, możecie skorzystać z kanału RSS i powiadomień e-mail (szczegóły na panelu z prawej strony) lub Facebooka – box na górze strony głównej.
-
Pawel
-
Michał Żurawski
-
Dawid
-
Bartek
-
wqrw