lider projektu: finansowanie:
Prosty robot sterowany algorytmem warunkowym (1 czujnik - koloru) ładowarka klocków. Cel: - zastosowanie struktury switch-case ( jeśli-to ) - rodzaje elementów struktury switch-case - zrozumienie sposobu działania struktury switch-case Materiały: - naładowane zestawy Lego Mindstorms w tym co najmniej jeden motor pomocniczy (Medium Motor) i co najmniej jeden czujnik dotyku - komputer PC z oprogramowaniem Lego Mindstorms Ev3 - kolorowe karteczki - pomoce dla trenera gotowy program, instrukcja wideo złożenia przykładowego robota Problem : - stworzenie robota ładującego, przemieszczającego się w przestrzeni, sterowanego przez kolorowe karteczki Przykładowy opis: Ludzie muszą przenosić ciężkie przedmioty, czasami dużo cięższe niż sami ważą można to im ułatwić, na przykład budując ładowarki, takie jak w kamieniołomach..
Przebieg zajęć: 1. Powołując się na przykład na znane dzieciom ładowarki z placu budowy albo złomowiska, omawiamy, jakie elementy będą nam na pewno potrzebne do zbudowania naszego robota. Z czego taka ładowarka się składa? Co się w niej rusza? a) Wysłuchanie pomysłu na budowę ładowarki o jak najmniejszej liczbie potrzebnych silników. b) Uzgodnienie, że na pewno nasza ładowarka będzie musiała mieć następujące elementy: - silnik, dzięki któremu będzie się poruszać jako pojazd, - koła, na których będzie jeździć, - łopatę, na którą można załadować różne rzeczy, - silnik, który będzie poruszał łopatą, - jakiś element, który pozwoli nam na sterowanie ładowarką. Proponujemy, że zrobimy model, który będzie sterowany kolorami - pytamy czego powinniśmy użyć w tym wypadku - możemy dać uczestnikom chwilę na zapoznanie się z czujnikami, których jeszcze nie używaliśmy, po chwili powinni oni odnaleźć odpowiedni klocek i odpowiedzieć, że będzie to czujnik kolorów, c) Zwracamy uwagę grupy na sposób funkcjonowania czujnika koloru jeśli użyjemy w programie warunku Brak koloru, może dojść do błędnego odczytu, a robot wykona wtedy pracę, której nie oczekiwaliśmy problem dotyczy odczytu koloru na różnych odległościach kartek od czujnika będziemy się musieli nad tym problemem zastanowić w czasie programowania robota.
2. Budowa robota z czujnikiem koloru należy przedyskutować położenie czujnika koloru. W razie gdyby zostało więcej czasu, można spróbować zbudować koszyczek na karteczki, żeby można je było w nim stabilnie umieścić w trakcie jazdy robota. 3. Teraz możemy przejść do zaprogramowania kostki EV3. Otwieramy więc środowisko do programowania. Dobrze jest zacząć od spojrzenia na zbudowanego robota i wypisania na tablicy (lub podkreślenia spośród już wypisanych) wszystkich elementów, które wymagają zaprogramowania. W naszym przypadku są to: motor jeżdżący, motor ładujący oraz czujnik koloru. Po pierwsze przypominamy, że każdy program musi się odpowiednio rozpoczynać. Pamiętamy o odpowiednim położeniu bloczka startowego. Ponieważ taka ładowarka będzie mogła, w zależności od tego jaki kolor jej pokażemy, wykonywać różne czynności po kilka razy, mówimy, że przydałoby się coś, co pozwoliłoby na ciągłe działanie robota. Innymi słowy, żeby robot po włączeniu zawsze był gotowy na to, że pokażemy mu jakiś kolor i będzie musiał na to zareagować. Przypominamy, że jeśli rozpisywaliśmy na algorytmy różne czynności, to te które chcieliśmy powtórzyć, umieszczaliśmy w tak zwanej pętli. Podobnie zrobimy w naszym programie: wszystkie elementy po jego rozpoczęciu umieścimy w pętli. Odnajdujemy odpowiedni bloczek Loop w pomarańczowej zakładce i dołączamy go do startu. Pod czerwonymi strzałkami, znajduje się wybór opcji dotyczących tego, kiedy pętla ma się zakończyć. Ponieważ ustaliliśmy, że ma działać zawsze po włączeniu robota, wybieramy opcję Unlimited ze znaczkiem nieskończoności.
powinien być umieszczony w taki sposób, aby po wyciągnięciu karteczki z innym kolorem, ustawiony był w stronę białej ścianki kostki, lub ściany z białych klocków. Żeby przerwać pracę obydwu motorów, umieszczamy ich bloczki (z prawidłowo wpisanymi literami portów wejścia) wewnątrz bloczka białego koloru oraz w obydwu ustawiamy opcję główną na Off. Resztę ustawień pozastawiamy domyślnych. Skoro mamy jazdę w przód, przydałoby się, żeby po odczytaniu kolejnego koloru robot mógł cofać. Żeby dodać kolejny warunek spełniany za pomocą odczytu kolejnego koloru, musimy kliknąć na niewielki plus umieszczony u góry, po lewej stronie switcha. Po jego naciśnięciu, pod dwoma już ustawionymi kolorami, pojawia nam się jeszcze jedno okienko, ze znakiem zapytania. Klikamy w ten znak i wybieramy kolor - dajmy na to, że będzie to czerwony. Teraz - analogicznie do jazdy w przód - umieszczamy wewnątrz bloczka koloru czerwonego, bloczek motoru sterującego ruchem robota. Żeby nasza ładowarka zaczęła się cofać, ustawiamy minusową wartość mocy silnika, na przykład -20%. Teraz pozostało nam zaprogramować łyżkę ładowarki. Ponieważ będzie ona reagować na kolejne kolory, tak jak poprzednio dodajemy bloczek koloru, tym razem niech będzie to zielony. W jego wnętrzu umieszczamy bloczek silnika odpowiedzialnego za ruch łyżki (pamiętając o oznaczeniu go odpowiednią literą). Ustawiamy motor na On oraz mówimy, że ruch łyżki nie wymaga tak dużej prędkości obrotowej jak poruszanie całym robotem, ustawiamy więc moc silnika na bardzo niską wartość, np. 5% lub -5% - w zależności od tego, jak nasz robot został zbudowany. Analogicznie dodajemy kolejny klocek z kolorem - umówmy się, że będzie to żółty, umieszczamy w nim bloczek motoru poruszającego łyżką i programujemy analogicznie do poprzedniego, z tą różnicą, że mocy motoru musimy nadać wartość przeciwną do poprzedniej.
Pytamy, co jest właściwie najważniejsze w naszym robocie i od czego zależy, jak będzie się zachowywał. Powołujemy się na wcześniejsze ustalenie, że będzie on sterowany kolorami - musimy więc gdzieś w programie umieścić czujnik koloru. Mówimy jednak, że skoro czujnik będzie sterował motorami, to cały robot będzie działać na zasadzie jeśli [pokażesz mi jakiś kolor] to [zrobię jakąś rzecz]. Przypominamy, że taką zależność programujemy za pomocą bloczka switch. Umieszczamy go więc w pętli. Tym razem nasz robot będzie działał za pomocą kilku warunków, za których spełnianie odpowiadać będą przeczytane przez czujnik kolorów - kolory karteczek. W bloczku switch, na samym początku musimy więc wybrać Color Sensor (czujnik koloru) => Measure => Color. Widzimy, że po wybraniu tej opcji, w środku switch pojawiły się nam dwa pola - odpowiadające za kolor czarny oraz brak koloru. Kolor czarny możemy pozostawić - użyjemy go, żeby nasz robot poruszał się do przodu. W tym celu, musimy w środku bloczka z kolorem czarnym umieścić bloczek z motorem. Pamiętajmy, żeby odpowiednio wpisać literę w jego prawym górnym rogu, tak żeby ten bloczek faktycznie odpowiadał motorowi poruszającemu robotem w przód i w tył. W bloczku, pod obrazkiem motoru musimy ustawić jego włączenie się kiedy czujnik koloru odczyta kolor czarny. W tym celu z listy wybieramy On. Następnie wpisujemy rozsądną wartość mocy silnika powiedzmy 20%. Robot będzie poruszał się do przodu przez cały czas, kiedy czujnik koloru będzie odczytywał kolor czarny. Co jeśli będziemy chcieli zatrzymać robota tak, żeby nie robił nic, a po prostu czekał na kolejny kolor? Domyślnie, w naszym switch pokazała się opcja brak koloru, ale z powodów, o których rozmawialiśmy wcześniej, zamienimy ją na kolor biały. We wcześniej zbudowanym robocie, czujnik koloru
4. Wgrywamy program na kostkę i testujemy robota. Dodatkowe wyzwania do rozwiązania: - budowa takiej ładowarki, żeby nie było konieczności wkładania ładunku do ładowarki samemu, - przebudowa napędu w taki sposób, żeby robot mógł skręcać, - budowa pojemnika na karteczki, - dopasowanie wartości kątów ruchów silników tak, aby można było tylko otwierać i zamykać łyżkę ładowarki bez możliwości zatrzymania na pośrednim położeniu
FAZY BUDOWY ROBOTA: 1. 3. 2.
4. 5.
6.
7.
8.