Powrót do scenariuszy
Szkoła podstawowa
Klasa: 7-8
Szkoła ponadpodstawowa
Klasa: 1-4
test
Autor:

Mateusz Chmielewski

Programowanie Photona w Pythonie #4 Radar i Strażnik!

informatyka • programowanie • technika
Czas:
45 min.
Roboty:
x2
Akcesoria:
Accessory
Interfejsy:
Python (Photon Magic Bridge)
alt
Powrót do scenariuszy
Scenario Image

Odniesienie do podstawy programowej

Szkoła ponadpodstawowa, Informatyka II./2., I./2.
Szkoła podstawowa, klasy VII-VIII, Informatyka, II./1, 2.

Cele zajęć

Uczeń/uczennica:
  • stosuje w programach pętle while i warunek if
  • wykorzystuje w algorytmach proste zmienne
  • dowiaduje się, jak działa radar i czujnik odległości

Metody pracy

  • dyskusja
  • ćwiczenie

Formy pracy

  • grupowa

Materiały

  • komputer na grupę

Załączniki

#4 radar.py
Pobierz
#4 straznik.py
Pobierz

Przebieg zajęć

Wstęp:

Podczas tego warsztatu wykorzystamy możliwości połączenia więcej niż jednego robota i skorzystamy z danych odczytywanych przez czujnik odległości. Przemienimy robota w radar, a także połączymy dwa roboty w niezwykły system przeciwwłamaniowy. Będą to dwa niepowiązane ze sobą programy, ale ilustrujące w ciekawy sposób różne możliwości wykorzystania czujnika.

Przebieg zajęć:

1. Wysyłanie fal - wprowadzenie do czujnika odległości

  • Zajęcia zaczynamy od pokazania uczniom zdjęcia nietoperza i łodzi podwodnej. Co je ze sobą łączy? Dopytujemy uczniów, czy wiedzą, jak działa echolokacja. Rozmawiamy o jej podobieństwie do sonaru. Czy radar zawsze korzysta z wysyłania fal dźwiękowych?
  • Prezentujemy czujnik odległości robota Photon i zapowiadamy, że dzisiaj będziemy się nim zajmować, przygotowując dwa różne programy.

2. Programujemy radar

  • Jako pierwszy przygotujemy program definiujący funkcję radar. Skorzystamy ze znanej nam już pętli powtórzenia omówionej w scenariuszu #3.
  • W tym programie robot kilkukrotnie obróci się i odczyta odległość od przeszkody. Łącznie robot Photon wykona pełny obrót (czyli o 360 stopni). Dla lepszego zobrazowania działania programu zerknijmy na zdjęcie:

 

  • Robot stoi w pomieszczeniu otoczony różnymi przeszkodami. Po uruchomieniu programu robot 6 razy obróci się i zmierzy odległość dzielącą go od nich. Mając listę 6 odległości, moglibyśmy, nie oglądając pomieszczenia, domyślić się, jakie jest rozmieszczenie ścian i innych przeszkód. Im więcej małych kroków wykona robot, obracając się, tym pomiar będzie dokładniejszy i będziemy mogli na jego podstawie wykryć np. wystającą po lewej stronie szafkę.
    • Po wykonaniu "skanu" otoczenia, chcemy otrzymać listę liczb opisujących odległość od przeszkody w każdym z kolejnych kierunków. Dlatego zaczynamy od określenia parametru, którym jest dystans. W tym wypadku chcemy, aby dystans nie był wyrażony w formie jednej odległości tylko kilku, dlatego tworzymy listę.
      dystans = [ ] oznacza, że dystans będzie listą różnych wartości.
    • append to metoda oznaczająca, że do listy dystans ma zostać dodana nowa wartość. Jaka? Pochodząca z czujnika odległości.
      Dlatego zapisujemy ten wiersz jako nazwa_listy.append(skąd_wziąć_wartość). Odległość odczytamy dzięki metodzie get_distance_from_obstacle(), która szczegółowo opisana jest w dokumentacji->metody->sensory.
  • Metoda print jest jedną z najprostszych w Pythonie. Oznacza wyświetlenie czegoś. W tym wypadku parametrów z listy dystans.

Przykład skonstruowania kodu do wykonania zadania

  • Testujemy zdefiniowaną funkcję, możemy dokonać więcej pomiarów, przesuwając przedmioty w pobliżu robota i zobaczyć, jak zmieniają się wyniki.

3. Programujemy system przeciwwłamaniowy

Drugi program łączy ze sobą dwa lub więcej robotów. Wykorzystujemy w nim dwie nowe pętle, tworząc prosty system przeciwwłamaniowy. 

  • Wyobraźmy sobie, że jeden robot jest strażnikiem, stojącym przy wejściu do domu. Kiedy ktoś wejdzie i wykryje go czujnik odległości, robot w sypialni na piętrze zaalarmuje nas.
  • Musimy zacząć od rozróżnienia dwóch robotów. Definiujemy je jako robot1 i robot2.
    • robotem1 jest ten obiekt klasy Photon, który na liście podłączonych do Magic Bridge robotów jest podłączony jako robot 0. Warto to tu zaznaczyć, bo w Pythonie można się tym zaskoczyć - wszystkie odliczania rozpoczynane są od 0. Dlatego jeśli do Magic Bridge podłączone są dwa roboty, pierwszy z nich ma numer 0, a drugi 1. To tak jak w bloku mieszkalnym, w którym piętra liczymy od parteru.
  • Wprowadzamy podobnie jak w radarze dystans. Tym razem jako jedną wartość (a nie listę) – aktualną odległość z czujnika robota1. Ponieważ odległość dzieląca robota od przeszkody będzie się zmieniać, dystans jest zmienną, czyli parametrem, który zawsze opisuje to samo, choć przybiera różne wartości.
    W radarze metody odczytującej odległość użyliśmy w formie photon.get_distance_from_obstacle(). Tym razem w programie obecne są dwa roboty i musimy precyzyjnie określić, z którego chcemy skorzystać. Zamiast Photon.get... zapiszemy robot1.get...
    Cały wiersz przyjmie formę dystans = robot1.get_distance_from_obstacle()
  • Dotychczas wykorzystywana pętla odpowiadała bloczkowi „powtórz n razy” ze Scratcha. Teraz chcemy, aby warunek sprawdzany był ciągle, więc potrzebujemy pętli „zawsze”. Tak działa while True. Samo while powtarza kod w pętli tak długo, jak spełniony jest dany warunek (powtarzaj aż). Dopisany warunek True jest zawsze prawdziwy. Zawartość pętli zapisujemy od wcięcia.
  • if to nic innego, jak znana ze Scratcha pętla „jeżeli”. Jeżeli dystans (robota1) będzie mniejszy niż 50 cm, robot2 uruchomi alarm. 
  • Lista podstawowych metod, w tym dostępnych kolorów i dźwięków dostępna jest w dokumentacji. 


Przykład skonstruowania kodu do wykonania zadania

  • Testujemy przygotowany kod. Możemy zastanowić się, co jeszcze może zrobić robot2, aby skutecznie ostrzec domowników o obecności intruza.

4. Podsumowanie

  • Podsumowujemy zajęcia i zwracamy uwagę na wszystkie nowe elementy. Pętle if i while, definiowanie list i zmiennych.
  • To dużo nowości, więc osoby, które wszystko zapamiętały i zrozumiały zasługują na uznanie.

Współautorem scenariusza jest Michał Nowak.

Ciekawostki/Pytania otwierające

  • Czujnik odległości składa się z dwóch części - nadajnika i odbiornika. Nadajnik wysyła fale, a odbiornik odczytuje odbite od przeszkody fale. Na podstawie różnicy czasu wylicza odległość, którą pokonała fala.
  • Najczęściej używane fale to ultradźwięki lub fale podczerwone.