Czas trwania – 45 min
Poziom trudności – średni
Wstęp
Wiesz, w jaki sposób panele solarne kierują się do słońca? Dzięki tej wiedzy elektrownie słoneczne działają z pełną mocą! Nauczymy się jak można ciekawie wykorzystać bardzo krótki program. Jesteś ciekawy? To zapraszam cię na dzisiejszą lekcję!
Przygotowanie
Moduły:
- LOFI Brain
- Czujnik światła x2
- Serwomotor
- Kabel USB
Co wcześniej trzeba przygotować:
Przeglądarkę Google Chrome z rozszerzeniem LOFI Robot Extension
(https://www.lofirobot.com/edubox/konfiguracja/)
Konstrukcja robota: ROBOT GŁOWACZ
Wiedzę ze zmiennych i bloków warunkowych (zajrzyj do lekcji o lampkach!)
Wiedzę z dodawania i mnożenia, bo będzie trochę matematyki.
Podłączenie:
- Czujnik odległości → port Distance
- Czujnik światła → INPUT1
- Czujnik światła → INPUT2
- Zasilanie robota → kabel USB → wyjście USB w komputerze
Przebieg
Budowa algorytmu
Zacznijmy od podstaw, czyli sterowania serwomotorem obracającym głowę.
Po ustawieniu serwomotoru na wartość 50, głowa będzie po środku. Oznacza to, że możemy przekręcić ją całkowicie w lewo (100), jak i w prawo (0).
Sam zobacz jak łatwo można sterować robotyczną głową!
A teraz coś, co może Cię bardzo zdziwić. Nie ma jednego sposobu na zmuszenie robota do ruszania głową w zależności od poziomu oświetlenia dwóch fotorezystorów. Twój program będzie się nieco różnił od przedstawionego przeze mnie – wynika to z faktu, że oświetlenie u mnie może być inne niż u Ciebie, a także nasze fotorezystory troszkę mogą się różnić!
Oczywiście jeśli chcemy, by głowa robota się poruszała musimy użyć zmiennej! Ja nazwę ją kierunek. Zmienną można stworzyć w zakładce ZMIENNE. Warto również dodać blok konsoli z zakładki KONTROLA – umożliwi on sprawdzanie jaką wartość ma zmienna w różnych sytuacjach. Mój program wygląda na razie tak:
W konsoli zobaczysz, że póki co zmienna kierunek ma wartość 0. Zastanówmy się, jak robot może sprawdzić, który czujnik światła jest bardziej oświetlony i jak duża jest różnica między nimi. Czekaj, czekaj… różnica… no tak! Odejmowanie! Spróbujmy odjąć wartość jednego fotorezystora od drugiego, na przykład INPUT1 – INPUT2. Bloki matematyczne znajdziesz w zakładce LICZBY. Tak wygląda mój program:
Spójrzmy, co pokazuje nam konsola. Moje fotorezystory są dość równomiernie oświetlone, ponieważ wynik odejmowania jest bliski zeru.
Spróbuj zasłonić najpierw jeden rezystor, a potem drugi. Pomoże to określić zakres naszych informacji. Ja otrzymałem najpierw wynik -30, a gdy zasłoniłem drugi czujnik, otrzymałem wartość 30. Gdybym chciał sterować serwomotorem, to byłoby całkiem w porządku, dopóki wartość zmiennej kierunek utrzymywałaby się powyżej zera. Niestety, gdy różnica wyniesie 0, robot przekręci głowę maksymalnie w prawą stronę i już dalej się nie ruszy. Co można zrobić, żeby wartości zawsze były powyżej 0? Może po prostu zawsze dodawajmy do zmiennej kierunek 30? Proste, ale skuteczne!
Od teraz mój zakres to od 0 do 60! 🙂 Jeśli chcesz zrobić tak samo jak ja, dodaj blok dodawania i w jedno miejsce wstaw cały blok odejmowania, który używaliśmy do tej pory – w drugie miejsce wstaw blok liczbowy o wartości, która pozwoli ci stworzyć zakres zaczynający się od 0.
Spróbujmy teraz uzależnić ruch głową robota od zmiennej kierunek!
Super! Fajnie by było, gdyby zakres ruchu robota był od 0 do 100. Tak jak to powinno być w rzeczywistości. Pomocna znowu będzie matematyka, a dokładnie mnożenie! Przez ile musimy pomnożyć liczbę 60, aby uzyskać 100? Hmmm… 100 podzielone przez 60 wynosi około 1.66, więc to by była całkiem przydatna wartość w moim programie, nie uważasz? Jeżeli chcesz znaleźć swój własny współczynnik, zrób to samo, co ja – podziel 100 przez maksymalną wartość którą uzyskujesz! 🙂
Oto program dla mojej głowy podążającej za światłem!
Spróbuj przy pomocy latarki zasymulować ruch słońca po niebie – robot powinien zachowywać się tak jak panel słoneczny!
Właśnie udało nam się stworzyć i skalibrować algorytm używany w różnych bardzo zaawansowanych obiektach. Możemy być z siebie dumni!