To prawda, mojej sadze o językach programowania ciągle brakuje zakończenia. Jeszcze chwilka! W międzyczasie dzielę się ciągle aktualnym tekstem z poprzedniego bloga.
Pamiętasz swoje pierwsze spotkanie z klockami Lego?
Spis treści
Pierwsze spotkanie
Mnie od pierwszego wejrzenia zachwyciły czyste kolory, przemyślane projekty oraz możliwości, jakie dawała ta zabawka dziecku chętnemu do używania wyobraźni. Oszczędzałam kieszonkowe i na każde urodziny zamawiałam statki pirackie i zamki na morzu.
Natychmiastową niechęcią zapałałam natomiast do modeli Paradiso, reklamowanych jako „Lego dla dziewczynek”. Na szczęście projektanci z Lego wiele się nauczyli od tego czasu.
Niestety nie mam żyłki inwestora – wyrzucałam pudełka i instrukcje, przez co po latach jestem posiadaczką dwóch koszy mieszanki Lego o wszystkich smakach. Nie uda mi się odsprzedać historycznych zestawów z dziesięciokrotnym przebiciem.
Po latach namiętność (finansowana już w pełni z własnej kieszeni) wróciła ze zdwojoną siłą. Nasz stryszek obecnie wygląda tak:

Dla zaawansowanych: Lego Technic
Jeśli masz smykałkę konstruktorską, być może masz doświadczenia z Lego Technic – serią bardziej skomplikowanych zestawów z ruchomymi częściami, a nawet silniczkami. Sama długo ich unikałam – wydawały mi się koszmarnie brzydkie! 🙂

Tymczasem na szczycie…
Lego Technic nie jest jeszcze szczytem ewolucyjnej drabiny duńskiej firmy. Już 1998 roku, dzięki współpracy Lego z MIT, narodził się nowatorski pomysł stworzenia i wprowadzenia do (w miarę) masowej produkcji programowalnego robota Lego Mindstorms. Opracowany wtedy zestaw składał się z programowalnej kostki oraz zbioru sensorów i silniczków.
Na zdjęciach w dalszej części wpisu widać robota w wersji NXT 2.0 – takiego mam w domu. Od września 2013 dostępna jest nowsza wersja, EV3. Napiszę o niej, jak tylko ktoś mi takiego robota wypożyczy!
Robot Lego Mindstorms wygląda mniej więcej tak:

Jak zbudować robota?
W skład zestawu wchodzą następujące elementy:
- Programowalna kostka: na zdjęciu to duży biały element z ekranem.
- Cztery sensory:
- Czujnik ultradźwięków. To „oczy” robota na zdjęciu. Używa ultradźwięków do określenia odległości (w centymetrach lub calach) do przedmiotu znajdującego się przed nim.
- Czujnik dźwięku. Mikrofon określający (za pomocą decybeli lub procentów) natężenie dźwięku w otoczeniu. Na zdjęciu widać go po lewej stronie ekranu.
- Czujnik dotyku. Na zdjęciu nie widać go zbyt dobrze – to “ogonek” z tyłu robota. Jest wyposażony w pomarańczowy przycisk. Czujnik ma tylko dwa stany: wciśnięty i zwolniony.
- Czujnik światła bądź koloru. Na zdjęciu niewidoczny, ponieważ znajduje się na spodzie robota. W zależności od wersji jest to albo czujnik światła (określa natężenie światła) lub kolorów. Czujnik światła pozwala odróżnić od siebie podstawowe kolory (np. czerwony od niebieskiego), ale może to wymagać kalibracji w zależności np. od pory dnia.
- Trzy silniczki krokowe. Robot na zdjęciu ma dwa niezależnie działające koła, z których każde “zużywa” jeden silnik, oraz łapę, która otwiera się i zamyka dzięki pracy trzeciego silnika i kilku zębatek.
- Pewien podzbiór tradycyjnych elementów Lego i Lego Technic – różny w zależności od wydania.
Co można zrobić z zestawem Mindstorms? Po pierwsze, można zbudować robota: według własnego projektu, projektu znalezionego w Internecie (np. tutaj), lub dowolnego projektu Lego Technic, w którym będzie upchnąć niezbyt poręczną kostkę.
A potem… Potem robota można zaprogramować.
Programowanie zabawki, czyli co dokładnie?
Istnieją trzy sposoby programowania robotów Mindstorms. Najprostsze, ale też dające najmniejsze możliwości, jest programowanie z użyciem samej kostki. W menu można znaleźć opcje takie jak „idź do przodu”, „poczekaj na wciśnięcie przycisku”, „powtórz”. Nawet małe dziecko zdoła w ten sposób wpłynąć na zachowanie robota. Warunkiem sukcesu jest podłączenie czujników i silniczków do odpowiednich portów, by „do przodu” powodowało ruch obu kół, a nie, na przykład, jednego z kół i chwytnej łapki.

Kolejny poziom wtajemniczenia to programowanie z użyciem interfejsu graficznego. Jest intuicyjne i przyjemne. Oferuje przy tym większe możliwości, niż początkowo mogłoby się wydawać (przynajmniej ja byłam zaskoczona). Jeśli chcesz zaprogramować coś w tym środowisku, musisz przeciągnąć wybrane elementy z menu i upuścić je na planszę, a następnie połączyć je w odpowiedniej kolejności. Dostępne są ikonki reprezentujące odczyty sensorów i ruch silników, a także instrukcje sterujące, takie jak pętle czy warunki.
„Kod” widoczny na rysunku poniżej to prosty program robota jadącego po linii zamkniętej w okrąg. Łatwo zauważyć zewnętrzną pętlę i wewnętrzną instrukcję „jeśli – to”, sprawdzającą odczyt z czujnika koloru.

Wreszcie, można programować robota „normalnie”, czyli pisząc kod. Programy napisane w niektórych językach (np. NXC: Not eXactly C) można uruchamiać w fabrycznie instalowanym środowisku kostki Mindstorms, inne natomiast (np. oparty o Javę leJOS NXJ) wymagają wymiany tzw. firmware.
Zabawa procentuje
Że Mindstorms to świetna zabawa – o tym nikogo chyba nie trzeba przekonywać? Nie sposób także przecenić walorów edukacyjnych tej zabawki (u dzieci i nie tylko). Wrócę na chwilę do tematu poruszonego już w pierwszym wpisie na tym blogu. To, co jeszcze 10 lat temu było uznawane za biegłość w obsłudze komputera, dzisiaj stanowi absolutną podstawę. Znajomość podstaw programowania ułatwia życie.
Na najbardziej elementarnym poziomie programowanie = logiczne myślenie. Programowanie zmusza twórcę kodu do planowania swoich działań i przewidywania ich wyników. Programowanie to konieczność poświęcenia czasu i cierpliwości na znalezienie poprawnego (lub wystarczająco dobrego!) rozwiązania praktycznego problemu.
Na pewno chciałabym, żeby moje dziecko wcześnie posiadło taki zestaw umiejętności.
Film!
Na zakończenie polecam filmik przedstawiający robota, który dzięki żyroskopowi (niestandardowy sensor, spoza zestawu) potrafi balansować kubkiem pełnym kawy… No prawie.
A tu porównanie NXT 2.0 i EV3: https://www.youtube.com/watch?v=2o7iteBPxMI&x-yt-cl=84503534&x-yt-ts=1421914688#t=44