W ostatnim czasie jak grzyby po deszczu pojawiają się na rynku rozmaite urządzenia ułatwiające naukę podstaw programowania. Dzięki robotom edukacyjnym prowadzenie zajęć z dziećmi staje się przyjemniejsze, a nauka bardziej przypomina zabawę. Co więcej, jej efekty widać nie tylko w postaci budzących respekt ciągów znaków na ekranie, ale też… robota posłusznie wykonującego zadania.
mBot to niewielki robot edukacyjny, stworzony w 2013 r. przez chiński start-up Makeblock. Wykorzystuje sprzęt i rozwiązania zgodne z otwartą platformą programistyczną Arduino. Można go programować zarówno w środowisku tekstowym (Arduino IDE), jak i graficznym (Scratch), co daje całkiem spore możliwości prowadzenia zajęć z dziećmi i młodzieżą. Posiada czujniki światła, odległości i linii, ale można go też rozbudowywać o dodatkowe elementy, np. czujniki temperatury czy dźwięku.
Inne zalety robota to możliwość sterowania za pomocą różnych urządzeń (laptopa, tabletu, smartfona), bezprzewodowa komunikacja przez Bluetooth, darmowe oprogramowanie z polskim interfejsem i – last but not least: dość przystępna cena. Wadą (dla niektórych) może być nieco toporny dizajn i – jak dotąd – brak aplikacji na urządzenia z systemem Android, służących do nauki programowania.
Najwięcej możliwości edukacyjnych da nam mBlock i zestawienie: robot + laptop (bądź robot + komputer stacjonarny). Po otwarciu programu, zmieniamy język na polski, „parujemy” robota z komputerem poprzez Bluetooth, a następnie instalujemy sterownik dla Arduino i sprawdzamy, czy wszystko działa. Zależnie od tego, jaki mamy system operacyjny, mogą wyświetlać się różne komunikaty wymagające od nas zgody na sparowanie urządzeń. Gdy robot szczęśliwie połączy się z komputerem, czerwona kropka nad bloczkami dla mBota zmieni kolor na zielony.
Ćwiczenia z programowania można przeprowadzać z dziećmi i młodzieżą (szkoła podstawowa, gimnazjum) na różnych etapach edukacyjnych. Zajęcia można zacząć z młodszymi dziećmi, nawet na poziomie I klasy SP.
Przykładowe zadania na zajęciach dla dzieci
Zadanie polega na tym, aby tak zaprogramować robota, by po wciśnięciu klawisza „strzałka w górę” jechał do przodu, klawisza „strzałka w dół” – do tyłu, klawisza „strzałka w prawo” – skręcał w prawo, a klawisza „strzałka w lewo” – w lewo. Gdy naciśniemy spację, robot ma się zatrzymać. Posługujemy się standardowymi bloczkami języka Scratch (zakładka „Skrypty”, kategoria „Zdarzenia”, bloczek „Kiedy klawisz… naciśnięty”) oraz dodatkowymi bloczkami dla robota mBot, dostępnymi w zakładce „Skrypty”, kategorii „Roboty” (bloczek „Jedź… z prędkością…”). Kierunek jazdy (i skrętu) dobieramy do stosownej strzałki, wybieramy prędkość, z jaką ma jechać robot, przeciągamy i łączymy ze sobą bloczki.
2. Zmieniamy kolory diod za pomocą klawiatury
Podobnie jak w poprzednim zadaniu, można tak zaprogramować robota, aby po naciśnięciu danego klawisza zapalały się światełka (diody LED) w wybranym przez nas kolorze. Tu korzystamy z bloczka „ustaw LED na płytce… R… G… B…”. Z rozwijanej listy można wybrać „wszystkie” (wówczas zaświecą się dwie diody zamocowane na „grzbiecie” robota), albo „lewy LED” lub „prawy LED” (wówczas w danym kolorze zaświeci się wybrana dioda). Kolory ustawiamy wybierając wartość spośród zaproponowanych na rozwijanej liście (np. 60) albo wpisując własną liczbę. Gdy wstawimy wartość tylko w polu „R”, kolor będzie czerwony, w polu „G” – zielony, w polu „B – niebieski, a od wartości zależeć będzie jasność koloru. Różne kolory i odcienie możemy uzyskać dobierając różne wartości dla danych pól.
3. Uczymy robota grać proste melodie
mBot jest wyposażony w brzęczyk, dzięki czemu może wydawać dźwięki o różnej częstotliwości. Każdemu dźwiękowi jest przyporządkowana jego nazwa – obowiązuje tu system anglosaski, czyli: C,D,E,F,G,A,B, od C2 do D8. Możemy tak zakodować robota, aby brzęczyk wydawał różne dźwięki w określonej kolejności, a więc zagrał jakąś prostą melodię. Można na przykład poprosić dzieci, aby nauczyły robota melodii „Wlazł kotek na płotek”, której zapis literowy to:
G,E,E,F,D,D,C,E,G - G,E,E,F,D,D,C,E,C – C,E,E,F,D,D,C,E,G – G,E,E,F,D,D,C,E,C
Dla mBota wybieramy zapis z liczbą 4 (G4… itd.), długość dźwięku 1/4 i 1/8 oraz czas pomiędzy dźwiękami brzęczyka: dłuższy na początku i krótszy dla ostatnich trzech nutek (np. odpowiednio: 0.3 i 0.1 sekundy). Z kropką (nie przecinkiem), ponieważ w Scratchu obowiązuje anglosaski zapis ułamków dziesiętnych. Skrypty będą wyglądać tak:
4. Pętle, zmienne i warunki, czyli mały krok do programowania „na serio”
Za pomocą robota można uczyć dzieci podstawowych działań arytmetycznych, wyrażeń logicznych, pętli czy działań na zmiennych. Pomocne będą tu czujniki mBota: czujnik światła i odległości. Np. robot zmierzy ilość światła w pomieszczeniu i gdy „otrzyma” więcej światła (np. gdy oświetlimy go latarką), zmieni kolor świecącej się diody. Zastosowany tu prosty skrypt wykorzystuje pętlę (cykliczne powtarzanie jakiejś czynności), instrukcję warunkową (wykonanie danej czynności w zależności od tego, jaki wystąpił warunek) i zmienną przyjmującą różne wartości liczbowe.
Najpierw tworzymy zmienną (bloczek „Utwórz zmienną”, kategoria „Dane i Bloczki”) i nazywamy ją „light” (czyli światło). Następnie mierzymy ilość światła w pomieszczeniu. Wystarczy do bloczka „kiedy kliknięto” dopiąć bloczek „ustaw ‘light’ na…” (kategoria „Dane i Bloczki”), a do wnętrza bloczka „ustaw ‘light’ na…” (w okienku „na…”) wkleić bloczek mBota „czujnik światła (czujnik światła na płytce)”. Wartości (natężenie światła) odczytujemy w lewym górnym rogu ekranu.
A teraz stworzymy skrypt, który sprawi, że po oświetleniu latarką mBot zmieni kolor światła diody z niebieskiego na czerwony. Żółta pętla „zawsze” oznacza, że robot nieustannie powtarza nakazaną mu czynność, a więc w tym przypadku sprawdza bez przerwy, ile światła jest w pomieszczeniu i w zależności od wyniku, wykonuje jedno z dwóch działań: włącza (bez przerwy) diodę czerwoną albo niebieską. Z kolei, instrukcja warunkowa „jeżeli…, to…, w przeciwnym razie…” (z żółtej kategorii „Kontrola”) pokazuje, co robot ma wykonać, jeśli nastąpi taki, albo inny warunek. Jeśli zmierzone natężenie światła w pomieszczeniu wynosiło 500, możemy wybrać – jako warunek – liczbę trochę większą (np. 600), po której przekroczeniu robot powinien zareagować, tzn. zmienić kolor diody. Warunek ten nastąpi, gdy skierujemy na robota strumień światła z latarki.
Podobne zadanie (z pętlą, zmienną i warunkiem) wykonamy, korzystając tym razem z wbudowanego czujnika odległości. Np. chcemy, by robot jechał do przodu świecąc diodami na zielono, a następnie 10 cm przed napotkaną przeszkodą zatrzymał się i zmienił kolor świateł na czerwony. Tworzymy zmienną i nazywamy ją np. „Dystans”, budujemy skrypt, na który składać się będą bloczki: pętla „zawsze”, instrukcja warunkowa „jeżeli… to, w przeciwnym razie…” i warunek określony przez nas jako odległość od przeszkody mniejsza niż 10 cm. W przykładowym skrypcie robot będzie jechał do przodu mając zapalone zielone światełka, a kiedy znajdzie się przed przeszkodą, zatrzyma się („pojedzie” z prędkością 0) i zmieni kolor diod na czerwony.
Możliwości tego, wydawałoby się, niepozornego robota są dużo większe niż te opisane w przykładowych zadaniach. Można rozwijać i łączyć ze sobą bloczki poszczególnych funkcji, tworząc dużo bardziej złożone skrypty. Można pełniej wykorzystać możliwości Scratcha i na zajęciach z robotem tworzyć interaktywne historyjki i gry. Wreszcie można uczyć programowania w środowisku Arduino IDE, a przy okazji zainteresować młodzież ideą wolnego i otwartego oprogramowania.