Czas trwania – 90min
Poziom trudności – TRUDNY
Wstęp
Cześć! Czy wiesz, co łączy łódź podwodną i nietoperza? Oboje używają dźwięku w celu poruszania po otoczeniu. To bardzo interesująca ciekawostka zwłaszcza, że dzisiaj zbudujemy SONAR, czyli urządzenie wykrywające obiekty przed sobą, a w dodatku utworzymy wizualizację otoczenia w LOFI Blocks!
Przygotowanie
Moduły:
- LOFI Brain
- Serwomotor
- Czujnik odległości
- Kabel USB
Co wcześniej trzeba przygotować:
Przeglądarkę Google Chrome z rozszerzeniem LOFI Robot ScratchX
(https://www.lofirobot.com/edubox/konfiguracja/)
Konstrukcja robota
Wiedzę z lekcji o czujniku parkowania
Podłączenie:
- Czujnik odległości → port Distance
- Serwomotor → OUTPUT1
- Zasilanie robota → kabel USB → wyjście USB w komputerze
Przebieg
Przeszukiwanie otoczenia
Żeby mieć pełnoprawny sonar musimy stworzyć robota, który przeszukuje otoczenie przed nim. Będzie to coś podobnego do czujnika parkowania (do którego warto zajrzeć przed tą lekcją :). Musimy więc użyć obracającej się głowy, którą stworzymy wykorzystując zmienną. Nazwiemy ją pozycja. Musimy teraz sprawić by głowa robota obracała się zgodnie z wartością zmiennej (blok Ustaw serwo… w zakładce ROBOT. Za każdym wykonaniem naszego programu będziemy zmieniali wartość zmiennej o 1. Wszystkie operacje na zmiennych znajdziesz w zakładce ZMIENNE.
Oczywiście musimy wyzerować zmienną, gdy przekroczy ona wartość 100 – jest to maksymalna wartość obrotu serwomotora.
Dodałem również chwilę czekania po wyzerowaniu zmiennej, umożliwi to powrót serwomotora do pozycji 0.
Wizualizacja otoczenia przy pomocy rysowania
Zajmiemy się teraz wizualizacją otoczenia. LOFI Blocks umożliwia rysowanie różnych elementów na specjalnie przygotowanej planszy dostępnej po naciśnięciu ikony pędzla znajdującej się po prawej stronie.
Jeżeli klikniesz teraz na tę ikonkę, to plansza powinna być całkowicie biała.
Przedstawmy nasze otoczenie przy pomocy kresek. Kreski będą różnej długości, w zależności od tego, co widzi nasz czujnik odległości. Jeżeli coś pojawi się w pobliżu robota, kreska stanie się dużo krótsza. Narysujmy sobie takie kreski!
Przejdź do zakładki RYSOWANIE i wybierz blok Prostokąt.
Jak widzisz, blok ten posiada różne parametry:
X – punkt początkowy prostokąta na osi poziomej
Y – punkt początkowy prostokąta na osi pionowej
Oba te punkty informują o tym, gdzie będzie znajdował się lewy górny róg prostokąta.
⇔ – szerokość prostokąta
⇕ – długość prostokąta
Dodajmy zatem prostokąt w punkcie X = 0 oraz Y = 0, o szerokości 1 i długości równej wartości odczytywanej z czujnika odległości. Program będzie wyglądał następująco:
Gdy włączymy program, zobaczymy że na planszy coś się pojawiło.
Chyba nie tak miał wyglądać nasz sonar… brakuje mu obracania prostokątów wraz z obrotem głowy. Dodajmy blok Obróć z zakładki RYSOWANIE.
Blok ten służy do obracania bloków w nim zawartym o określony kąt, wokół określonego miejsca obrotu ( na osi X oraz Y). W naszym sonarze, punkt obrotu będzie się znajdował na górnej krawędzi, w połowie szerokości planszy. Jesteś w stanie określić to miejsce przy pomocy współrzędnych X i Y? Wiemy, że szerokość całej planszy to 100, a więc połowa to 50. W miejsce X wpiszemy więc 50. A co z tą górną krawędzią? Skoro wysokość planszy określają igreki, a na samym dole Y ma wartość 100, to na górnej krawędzi Y będzie miał wartość 0!
Okej! Mamy już punkt obrotu! Musimy jeszcze ustalić o jaki kąt będziemy obracali rysowane przez nas prostokąty. Musimy zapamiętać pewne zasady:
- Obiekty obracają się zgodnie z ruchem wskazówek zegara, gdy obracamy je o dodatni kąt (np. 45)
- Obiekty obracają się przeciwnie do ruchu wskazówek zegara, gdy obracamy je o kąt ujemny (np. -45)
Jak sprawić, by nasz sonar rysował prostokąty od lewej strony aż do prawej? Ustalmy początkowe położenie prostokątów po lewej stronie. Wpiszmy zatem, że kąt obrotu ma być równy 90.
Program i wizualizacja będzie wyglądał w ten sposób:
Jeśli chcemy, by nasz sonar obracał się wraz z ruchem głowy, musimy uzależnić go od zmiennej pozycja. Zmienna pozycja przyjmuje wartości od 0 do 100, więc gdy zaczniemy odejmować zmienną od początkowego położenia, prostokąty będą rysować się obrócone o: 90, 89, 88, 87… aż dojdą do wartości -10 stopni (bo gdy zmienna osiągnie wartość 100, to w działaniu działaniu 90 – 100 uzyskamy -10). Spróbujmy wykonać takie odejmowanie!
Nasz sonar już prawie działa. Musimy tylko sprawić, by prostokąty obracały się od 90 do -90 stopni, zamiast od 90 do -10 stopni. Musimy sprawić, by podczas odejmowania zmienna kierunek osiągała wartość maksymalną 180, a nie tak jak dotychczas tylko 100. Wystarczy tylko przed odejmowaniem pomnożyć zmienną przez liczbę 1.80 i program wydaje się być prawie doskonały!
Juhuuu! Mój robot zobaczył coś dużego po lewej stronie. Warto dodać wyczyszczenie planszy do rysowania po sprawdzeniu otoczenia. Zrobimy to rysując ogromny kwadrat (tak duży jak cała plansza) w bloku warunkowym odpowiedzialnym za powrót głowy do początkowego położenia. Jednak zauważ, że nasze prostokąty są czarne, więc gdy narysujemy taki duży kwadrat, to on również będzie czarny i wtedy już nic nie będziemy w stanie odczytać z naszego sonaru.
Pomoże nam tutaj blok Wypełnienie znajdujący się w zakładce RYSOWANIE.
Pewnie zastanawiasz się, co oznaczają te dziwne literki R, G, B i A. Otóż pierwsze trzy to oznaczenia kolorów, a ostatnia A reprezentuje przezroczystość. Wartość liczbowa obok literek przedstawia, jak bardzo chcemy danego koloru użyć.
- R – Red – Czerwony
- G – Green – Zielony
- B – Blue – Niebieski
Powyżej przedstawiłem ci jak można mieszać 3 podstawowe kolory, by uzyskać inne. Na przykład, gdy pomieszasz zielony z czerwonym uzyskasz żółty! Zauważ, że gdy wszystkie kolory ustawisz na 0, to wyjdzie kolor czarny.
Blok Wypełnienie jest jak wzięcie pędzla do ręki i zanurzenie go w wybranej farbie. W dodatku możemy z różną siłą dociskać ten pędzel do naszej planszy, dzięki regulacji przezroczystości. Spróbujmy zamalować planszę na biało (R:100, G:100, B:100, A:100) po przeskanowaniu otoczenia naszym sonarem. Wyglądałoby to tak:
Jeżeli udało nam się zakolorować całą planszę na biało, to może zmienimy kolor prostokątów, które obrazują nasze otoczenie? Ja proponuje kolor czerwony! Zobacz, jak mi to wyszło.
Tym sposobem nasz sonar jest gotowy! Kolor czerwony jest uzależniony od tego co widzi czujnik odległości. Gdy w pobliżu nic nie ma to prostokąty będą długie i czerwone, natomiast gdy coś będzie bliżej to prostokąt stanie się coraz ciemniejszy i krótszy.
Dodatkowe zadanie
Spróbuj odtworzyć sekwencję bloków, którą widzisz poniżej. Stworzą one doskonałe tło dźwiękowe dla twojego sonaru. Możesz również pobawić się na własną rękę i stworzyć jakąś ciekawą kombinację kolorystyczną lub dźwiękową! Wszystkie bloki dźwiękowe znajdziesz w zakładce Dźwięk. Pamiętaj, że bloków dźwiękowych nie trzeba umieszczać w głównym programie sonaru, należy je wstawić do osobnej pętli Graj. Miłej zabawy!