Poznajemy funkcje sterujące robotem

Omówienie zasady działania bloków sterujących robotem

Czas trwania zajęć: 45 min (1 godzina lekcyjna)

Wprowadzenie (krótki opis zajęć):

Zapoznanie uczniów z możliwościami LOFI Blocks. Pokazanie, w jaki sposób można sterować robotem z poziomu komputera. Testowanie podstawowych bloków kontrolujących działanie sterownika LOFI Brain 2.0. Stosowanie podstawowych pojęć: funkcja, parametr, zmienna.

Cele zajęć

Uczeń powinien:

  • Rozumieć pojęcia: funkcja, parametr, zmienna, sterowanie, programowanie,
  • Uruchamiać LOFI Blocks on-line,
  • Podłączyć za pomocą kabla USB sterownik LOFI Brain 2.0 z komputerem,
  • Sterować silnikami pojazdu z poziomu LOFI Blocks i zmieniać parametry silników (silnik, kierunek, moc),
  • Tworzyć proste skrypty umożliwiające dynamicznie sterowanie pracą silników przy pomocy myszy i klawiatury,
  • Tworzyć nowe zmienne i odczytywać wartości z czujników.

Pojęcia kluczowe:

  • Blok / Funkcja
  • Parametr
  • Zmienna
  • Sterowanie
  • Programowanie

Metody pracy:

  • Wykład problemowy
  • Dyskusja dydaktyczna związana z wykładem
  • Pokaz
  • Ćwiczenia przedmiotowe
  • Projekt

Materiały pomocnicze:

  • Laptop/komputer nauczycielski z zainstalowaną przeglądarką
    internetową Chrome i wtyczką LOFI Robot Extension oraz z zainstalowanym
    programem Arduino IDE,
  • Projektor i ekran projekcyjny,
  • Komputery uczniowskie z zainstalowanymi przeglądarkami
    internetowymi Chrome i wtyczką LOFI Robot Extension oraz z zainstalowanym
    programem Arduino IDE,
  • Dostęp do internetu na wszystkich komputerach,
  • Zestaw CODEBOX LOFI Robot edycja Superkoderzy – pojazd zmontowany w czasie
    lekcji 5 i 6 z modułem BLUETOOTH,
  • Jeśli LOFI Blocks się nie uruchamia należy sprawdzić czy
    na komputerach jest zainstalowana aktualna wersja FLASH lub zezwolić przeglądarce
    na używanie FLASH na tej stronie.

Treści programowe (związek z podstawą programową)

Podstawa programowa kształcenia ogólnego dla szkół podstawowych –
II etap edukacyjny – klasy IV-VI. Zajęcia komputerowe. Treści szczegółowe:

1. Bezpieczne posługiwanie się komputerem i jego oprogramowaniem.
Uczeń:

1.5. posługuje się podstawowym słownictwem informatycznym;

5. Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem
komputera.Uczeń:

5.1. za pomocą ciągu poleceń tworzy proste motywy lub steruje
obiektem na ekranie;

5.2. uczestniczy w pracy zespołowej, porozumiewa się z innymi
osobami podczas realizacji wspólnego projektu, podejmuje decyzje
w zakresie swoich zadań i uprawnień.

Przebieg zajęć:

1. Wprowadzenie w tematykę i integracja grupy

Czas na realizację tej części: ok 10 minut.

Rozpoczynamy dyskusję, zadając uczniom pytanie: Czy poznaliście już program LOFI Blocks?
Słuchamy odpowiedzi. Uczniowie mogą już znać program, jeśli nie mieli z nim styczności, informujemy że jest to bardzo podobny język blokowy podobny do Scratch’a, którego poznali na pierwszych czterech lekcjach projektu Superkoderzy.
Zadajemy uczniom pytanie: Co można robić w programie Scratch?

  • Tworzyć własne animacje,
  • Tworzyć własne gry komputerowe,
  • Tworzyć programy edukacyjne,
  • Projektować multimedialne, interaktywne kartki świąteczne itp.

Informujemy uczniów żę możliwości LOFI Blocks są bardzo podobne. Można pracować zarówno na komputerach on-line jak i sprawnie i wygodnie sterować robotami na tabletach i smartfonach.

Możliwości LOFI Blocks to:

  • Obsługa i sterowanie LOFI Robotami
  • Programowanie interaktywnych gier i zabaw
  • Tworzenie graficznych kompozycji i animacji
  • Wymyślanie instrumentów i efektów dźwiękowych
  • Nauka ośmiu języków obcych

Na komputerze nauczyciela uruchamiamy przeglądarkę internetową i aplikację LOFI Blocks (http://https://www.lofiblocks.com/koduj/ ). Wyświetlamy obraz z komputera nauczycielskiego na tablicy.

Zadajemy kolejne pytanie: Czy wiecie jak podzielone jest okno programu LOFI Blocks?

Jest to okazja do dyskusji i pokazania przy pomocy projektora oraz omówienia budowy programu i zasady działania (nauczyciel pokazuje, daje wypowiadać się uczniom – opisywać poszczególne elementy i sam dopowiada):

interface

  • Po lewej stronie (punkt 1) widzimy zakładki z blokami do programowania podzielonymi na kategorie: ROBOT, KONTROLA, LICZBY, LOGIKA, RYSOWANIE, MOWA, DŹWIĘK, ZDARZENIA, ZMIENNE.
  • Poniżej zakładek znajduje się przycisk START/STOP (punkt 2) uruchamiający i zatrzymujący działanie programu.
  • Zakładka USTAWIENIA (punkt 3) zawierająca funkcje do logowania, zarządzania kontem użytkownika oraz zapisywanie i eksportowanie projektów. Możemy tutaj zachęcić uczniów do zalogowania się jeśli posiadają oni swoje konto e-mail. Dzięki temu będą mogli zapisywać swoje projekty, dzielić się nimi, mogą do nich wrócić w domu i ulepszać lub zmieniać.
  • Znak zapytania (punkt 4) to link do dokumentacji i przykładów. Znajdziemy tam objaśnienia interfejsu użytkownika, jak połączyć się z robotem, oraz objaśnienia do wszystkich bloczków z każdej kategorii LOFI Blocks.
  • W samym centum (punkt 5) znajduje się pole robocze na którym tworzymy program, umieszczamy tam wszystkie potrzebne nam bloczki wyciągane z odpowiednich kategorii.
  • Menu podręczne (punkt 6) to zbiór dodatkowych funkcji aplikacji LOFI Blocks: Połączenie z robotem – Ikona z główką robota sygnalizuje czy aplikacja poprawnie komunikuje się ze sterownikiem Arduino – jeśłi tak, wokół ikony pojawia się okrągła obwódka. Kliknięcie na tą ikonę powinno spowodować dwukrotne piknięcie buzzera na sterowniku LOFI Brain. Monitor czujników i konsola – pozwala w czasie rzeczywistym podejrzeć odczyty ze wszystkich wejść sterownika (nawet jeśli nie są do nich podpięte żadne moduły) oraz z czujnika odległości.
    (Konsola umożliwia wyświetlanie wartości różnego rodzaju zmiennych przy pomocy odpowiedniego bloku z działu KONTROLA). Wbudowany gamepad – umożliwia sterowanie robotem. Jest on powiązany z sekcją bloków ZDARZENIA. Tablica do rysowania
    otwiera pole do rysowania powiązane z sekcją bloków RYSUJ. (W lewym górnym rogu tablicy do rysowania znajduje się przycisk umożliwiający przełączeniu jej w tryb pełnoekranowy). Wbudowana klawiatura pianina – otwiera panel z wbudowaną klawiaturą, umożliwiającą granie dźwięków z gamy C-dur w zakresie siedmiu oktaw.

W samym centum (punkt 5) znajduje się pole robocze na którym tworzymy program, umieszczamy tam wszystkie potrzebne nam bloczki wyciągane z odpowiednich kategorii. Bloczki do obsługi LOFI Robota muszą być ułożone w jeden skrypt / ciąg i umieszczone w pętli POWTARZAJ.

POWTARZAJ_II

UWAGA – Tylko jeden tego typu blok może być w naszym programie. Nie można również tego bloku skasować

Poinformuj też uczniów że program dopiero zacznie działać po kliknięciu w przycisk START/STOP

Nauczyciel prosi uczniów o włączenie komputerów i uruchomienie LOFI Blocks w przeglądarkach internetowych Chrome.

2. Część zasadnicza

Czas na realizację tej części: ok 30 minut.
Nauczyciel wykonuje opisane niżej ćwiczenia. Pokazuje uczniom, co robi i omawia. Po zakończeniu pokazywania każdego ćwiczenia nauczyciel prosi, aby uczniowie w grupach wykonali podobne próby na swoich komputerach, ze swoimi robotami.
Ćwiczenie 1 – sterujemy kołami pojazdu (10 min)
Podłączamy sterownik LOFI Brain do komputera za pomocą kabla USB. W przeglądarce na stronie ScratchX dioda przy opisie rozszerzenia Lofi Robot świeci się na zielono, co oznacza że nasz sterownik (robot) jest dobrze podłączony z komputerem i sterowanie z poziomu ScratchX już jest mozliwe. Gdyby światełko świeciło się na żółto oznaczałoby to, że na sterownik najprawdopodobniej nie jest wgrany skrypt LOFI Firmata (więcej info w materiałach pomocniczych na początku scenariusza i w materiałach dla nauczyciela na stronie LOFI ROBOT: http://www.lofirobot.com/edubox/scratchx-chrome/). Jeśli światełko będzie czerwone to oznacza, że nasza przeglądarka nie wykrywa rozszerzenia do Scratcha (więcej info w materiałach pomocniczych na początku scenariusza i w materiałach dla nauczyciela na stronie LOFI ROBOT: http://www.lofirobot.com/edubox/scratchx-chrome/).
Uwaga: przed rozpoczęciem ćwiczenia warto roboty położyć na jakiejś podstawce, tak aby koła nie dotykały ławki. W przeciwnym wypadku roboty mogą spaść na podłogę.
Zakładka WIĘCEJ BLOKÓW zawiera bloki służące do sterowania robotem. Ich nazwy są dość proste. Każdy blok to jakaś funkcja. Bloki posiadają parametry (np. wybór silnika, wybór kierunku obrotu, wybór mocy silnika).
Pierwszy blok dotyczy sterowania silnikami. Jeśli uruchomię poniższą funkcję:

Nauczyciel wyciąga ten blok na środek i klika. Silnik podłączony do portu M1, będzie się obracał w kierunku “przód” z mocą “100%”.
W sumie możemy zmienić 3 parametry tej funkcji:
port – gniazdo, do którego podłączony jest silnik: M1, M2.
kierunek: przód / tył.
Moc – wpisujemy od 0 do 100, bez znaku procent, ale domyślnie pamiętamy, że jest to wartość procentowa, czyli 100 – oznacza pełną moc / prędkość, a 0 – oznacza zatrzymanie silnika. Wartości ujemne nie są przyjmowane.
Omawiając powyższe kwestie demonstrujemy to uczniom zmieniając różne parametry tej funkcji na komputerze nauczyciela i pokazujemy jak zachowuje się robot podłączony do komputera nauczyciela. Następnie prosimy o przetestowanie tego przez uczniów.
Zwracamy uwagę, że silnik już po jednokrotnym wywołaniu tej funkcji, obraca się z daną prędkością cały czas, do momentu kiedy ten sam silnik otrzyma kolejne polecenie, np. obracania z inną prędkością, czy obracania w innym kierunku. Chcąc zatrzymać silnik, musimy mu wydać polecenie “obracania się z mocą 0”.
Ćwiczenie 2 – dynamicznie sterujemy prędkością silnika (ok. 10 min)
Mówimy uczniom, że możemy też dynamicznie zmieniać parametry tej funkcji. Na przykład jeśli z sekcji “Czujniki” wezmę blok “X myszy” (który sczytuje położenie wskaźnika myszy na ekranie) i wstawię ten blok jako parametr do powyższej funkcji w mocy, to w zależności od tego gdzie (lewo-prawo) będę ustawiał wskaźnik myszy w polu gry w Scratch, to silnik będzie zmieniał prędkość.

Należy jednak pamiętać, aby powyższy blok wstawić w pętlę “Zawsze”, którą znajdziemy w sekcji “Kontrola”. Wówczas po kliknięciu na taką funkcję (umieszczoną w pętlę zawsze) komputer zawsze sczytuje położenie wskaźnika myszy na osi X i zmienia parametr mocy, a więc zmieniamy prędkość silnika, w zależności od ruchów myszą na ekranie. Uwaga: ponieważ funkcja sterująca silnikami przyjmuje parametr mocy od 0 do 100, to tak naprawdę gdy wskaźnik myszy jest poniżej 0 na osi X, lub powyżej 100, funkcja przyjmuje minimalne i maksymalne wartości (0 i 100).

Jeżeli chcemy sterować silnikiem przy pomocy klawiatury, to tworzymy ciągi poleceń (łączymy kilka bloków). Na przykład: Kiedy klawisz Spacja naciśnięty – Obracaj Silnik M1 w kierunku tył z mocą 100 Kiedy klawisz Strzałka w górę naciśnięty – Obracaj Silnik M1 w kierunku przód z mocą 100 Po wykonaniu powyższych 2 skryptów, spacja będzie uruchamiała kręcenie silnika w tył, a strzałka w górę będzie uruchamiała kręcenie silnika w przód. Do sterowania robotem-pojazdem za pomocą klawiatury powrócimy na kolejnej lekcji.
Ćwiczenie 3 – odczytujemy dane z czujników (ok. 5 min)

Gdy konstruujemy robota, nie tylko chcemy nim sterować z poziomu komputera, ale chcemy go zaprogramować tak, aby wykorzystywał swoje czujniki i sam w odpowiedni sposób reagował. Chcemy, aby czujniki sterowały aktuatorami.

W naszym robocie-pojeździe mamy zamontowany jeden czujnik: odległości. Możemy odczytać jego wartość na komputerze przy pomocy bloku CZUJNIK ODLEGŁOŚCI. W tym celu wyciągamy ten blok na środek i gdy klikniemy na niego, w chmurce przez chwilę pojawi się wartość. Możemy zbliżać rękę do czujnika i klikać na ten blok oraz oddalać rękę i klikać. Komputer będzie wyświetlał przez chwilę różne wartości.

Jeśli jednak chcemy, aby ta wartość (tu: odległość) odczytywana i wyświetlana była cały czas, musimy w sekcji “Dane” stworzyć nową “Zmienną”. Możemy ją nazwać np. “odległość”. Pokażą się bloki dotyczące tej zmiennej, a jej wartość wyświetla się w lewym górnym rogu programu. Aby korzystać z tej funkcji, należy napisać następujący skrypt:
W pętlę zawsze, wstawiamy polecenie Ustaw ODLEGŁOŚĆ na i jako parametr wstawiamy blok “Czujnik odległości”. Uwaga: elektroniczny czujnik odległości podaje swoje pomiary wolniej niż Scratch wykonuje pętlę ZAWSZE, dlatego musimy zwolnić częstotliwość jej powtarzania dodając opoźnienie. czyli blok CZEKAJ 0.1s
Gdy uruchomimy (kilkniemy zieloną flagę) ten skrypt, na ekranie cały czas pojawiać się będzie odczyt z czujnika odległości. Sprawdzamy to przysuwając i oddalając dłoń od czujnika naszego pojazdu.

Prosimy, aby uczniowie zrobili to samo i w między czasie mówimy uczniom, że w ten sam sposób działa blok: ODCZYTAJ WEJŚCIE INPUT 1-4. W ten sposób, gdy do różnych wejść robota będziemy podłączać różne czujniki, możemy odczytywać ich wartości i wstawiać jako parametry zmienne do funkcji.
Zwracamy uwagę, że cztery pierwsze bloki z listy różnią się kształtem od bloków ODCZYTAJ WEJŚCIE i CZUJNIK ODLEGŁOŚCI. Nie jest to przypadek, ponieważ różnią się one sposobem działania.

Pierwsze cztery bloki (obracaj silnik, ustaw wyjście na wartość, ustaw wyjście jako, ustaw buzzer) to bloki funkcyjne. Po ich uruchomieniu wykonane zostanie jakieś działanie np. uruchomienie silnika lub zapalenie diody. Kształt bloków funkcyjnych ma charakterystyczne wcięcia dzięki, którym można je łączyć ze sobą tworząc bardziej zaawansowane funkcje.
Bloki ODCZYTAJ WEJŚCIE i CZUJNIK ODLEGŁOŚCI mają okrągły kaształt, są to tzw. bloki raportujące. Ich uruchomienie nie spowoduje żadnego widocznego działania. Blok raportujący sprawdza jakiś parametr, w tym wypadku mówi nam, jakie są wskazania czujnika podłączonego do któregoś z WEJŚĆ, a następnie pozwala nam przekazać tę wartość gdzieś dalej np. do któregoś z bloków funkcyjnych jako parametr. Przy ich pomocy możemy odczytać sygnały z czujników (z przycisku, potencjometru, czujniku światła) podłączonych do gniazd INPUT.
Ćwiczenie 4 – sterujemy wyjściami i głośnikiem-buzzerem (ok. 5 min)
Teraz poświęcimy uwagę kolejnemu blokowi: Ustaw wyjście OUTPUT 1-4 na wartość 0-100

Przy pomocy tego bloku możemy sterować poziomem sygnału na WYJŚCIACH – OUTPUT 1-4, dzięki czemu możemy kontrolować np. jasność diody lub wskazania miernika napięcia. Sprawdzamy działanie tego bloku podłączając do wyjścia OUTPUT1 moduł diody LED.
Podobnie działa blok Ustaw BUZZER jako WŁĄCZONY/WYŁĄCZONY

Jest to blok funkcyjny sterujący wbudowanym w płytkę LOFI Brain buzzerem, czyli małym piszczącym głośniczkiem. Posiada on jeden parametr określający stan działania buzzera jako WŁĄCZONY lub WYŁĄCZONY.
W zależności od ilości pozostałego czasu pozwalamy uczniom przetestować działania poznanych bloków.
Prosimy o odłączenie robotów od komputerów. Roboty składamy do pudełek. Wyłączamy komputery.

3. Podsumowanie i ewaluacja

Czas na realizację tej części: ok 5 minut
W ramach podsumowania przypominamy uczniom, że każdy blok w Scratchu to jakaś funkcja, czyli polecenie wykonujące jakąś czynność (np. włączające silnik). W przypadku wielu funkcji możemy ustawiać parametry (jak nr silnika, moc, kierunek obrotu, rodzaj wyjścia itp.). W przypadku niektórych parametrów możemy wykorzystać zmienne, np. wówczas gdy odczytujemy wartości z czujników (z czujnika odległości, czujnika natężenia światła czy potencjometru).
Przypominamy, że ze sterowaniem mamy do czynienia najczęściej w przypadku maszyn, a roboty najczęściej programujemy. Oczywiście robotem możemy też sterować. Sterowanie polega zazwyczaj na wydawaniu pojedynczych poleceń, a maszyna (np. silnik) natychmiast je wykonuje. Programowanie polega na układaniu ciągów poleceń, np. w Scratchu na łączeniu kilku bloków (funkcji) w ciągi poleceń, które możemy nazwać skryptami, czyli programami.