Czas trwania – 45 min
Poziom trudności – ŁATWY
Wstęp
Dzisiaj przygotujemy prywatną strzelnicę! Brzmi groźnie, ale bez obaw. Naszą bronią będzie wskaźnik laserowy, a celem czujnik światła! GOTOWI, CEL, PAL!
Przygotowanie
Moduły:
- LOFI Brain
- Serwomotor
- Dioda
- Przycisk
- Czujnik światła
- Kabel USB
UWAGA – Do zrealizowania tego projektu potrzebny jest wskaźnik laserowy (najczęściej spotykany w formie wskaźnika do prezentacji lub zabawki dla kotów), który nie wchodzi w skład zestawu CODEBOX.
Konstrukcja robota
Instrukcja montażu konstrukcji strzelnicy
Podłączenie:
- Czujnik światła → port INPUT3
- Przycisk → INPUT1
- Serwomotor → OUTPUT1
- Dioda → OUTPUT3
- Zasilanie robota → kabel USB → wyjście USB w komputerze
Przebieg
Działanie strzelnicy
Strzelnica to bardzo prosta, ale jednocześnie dająca dużo zabawy gra polegająca a trafianiu w ruchomy cel przy pomocy wskaźnika laserowego.
Gdy trafimy w cel (czujnik światła), robot wylosuje nową pozycję tarczy oraz zasygnalizuje trafienie poprzez zapalenie diody i włączenie buzzera. Te funkcje zrealizujemy przy pomocy naszego ulubionego bloku warunkowego Jeżeli… w przeciwnym razie.
Trafienie w cel będzie odczytywane przez czujnik światła. Gdy wartość odczytana z fotorezystora przekroczy 75, wykonamy określone wcześniej akcje.
Akcje wykonywane po trafieniu to:
- Zaświecenie diody
- Ustawienie serwomotora w losowej pozycji
- Włączenie buzzera
Dodatkowo dorzucimy chwilę oczekiwania, by pozwolić serwomotorowi zmienić pozycję.
W momencie, gdy fotorezystor nie odczytuje dużego natężenia światła, należy wyłączyć diodę i buzzer.
No i właściwie główne założenia strzelnicy zostały spełnione!
Punktacja
Możemy zaimplementować naliczanie punktów po trafieniu, wyświetlanie ich na planszy do rysowania oraz zerowanie po naciśnięciu przycisku. Należy najpierw dodać zmienną, która będzie przechowywała liczbę punktów. Nazwę ją punkty. Naliczanie punktów po trafieniu zrealizujemy poprzez blok Zmień punkty o dodany do sekwencji zadań realizowanych po trafieniu (ale przed blokiem Czekaj).
Teraz czas na wyświetlanie naszej punktacji. Będziemy potrzebowali paru bloków z zakładki RYSOWANIE.
Co trzeba wykonać?
- Wymazanie poprzedniego wyniku
- Wyświetlenie aktualnej wartości zmiennej punkty
Musimy wymazywać poprzednie wyniki z planszy, ponieważ w przeciwnym razie nakładałyby się na siebie i nie byłoby możliwe ich odczytanie. Wymazywanie zrealizujemy poprzez rysowanie białego kwadratu o wielkości całej planszy.
Wyświetlenie wartości zmiennej jest możliwe poprzez użycie bloku Tekst po uprzednim nadaniu mu koloru.
Przydałoby się zerowanie wyniku, prawda? Użyjemy do tego przycisku połączonego z blokiem warunkowym Jeżeli. Warunkiem nie może być samo sprawdzenie czy INPUT1 jest prawdą (czy przyjmuje wartość większą od 0), ponieważ stosunkowo często na wejściu indukują się pewne małe napięcia, które są odczytywane jako na przykład wartość 2. Musimy zatem zastosować coś mniej zawodnego, czyli porównanie z większą wartością. Odpowiednim wyborem będzie chociażby sprawdzenie czy INPUT1 jest większy od 50.
Jeżeli jest to prawda, to ustawimy punkty na 0.
Dodatkowe utrudnienia
Jako dodatkowe utrudnienie można dodać zmiany położenia serwomotoru niezależnie od naliczonych punktów. W losowych odstępach czasu serwomotor zmieni pozycję i konieczne będzie wycelowanie na nowo. Do stworzenia takiej funkcji naszej strzelnicy wykorzystamy dość nieintuicyjne rozwiązanie, a mianowicie, blok Graj.
W bloku Graj oprócz muzyki odtwarzać można również bloki związane ze sterowaniem robotem – blok Powtarzaj i Graj są wykonywane niezależnie od siebie, więc gdy stworzymy odpowiednią sekwencję bloków uzyskamy dodatkowy ruch ramienia na którym zawieszony jest fotorezystor.
Funkcja czekania jest wykonywana niezależnie od głównego programu, więc nie powoduje zatrzymania naliczania punktów i wykrywania trafień.
Robot będzie czekał od 1 sekundy do 3 sekund a następnie ustawiał ramię w losowe miejsce. Należy przy tym pamiętać, że nawet po trafieniu czas oczekiwania na zmianę położenia serwomotoru nie ulega wyzerowaniu, więc zaraz po trafieniu możemy uzyskać nowe pozycje jedna po drugiej.