CELE, POJĘCIA, MATERIAŁY ▼
Cele zajęć
Cele ogólne:
• Wyrabianie umiejętności rozumienia, analizowania i rozwiązywania problemów na bazie logicznego i abstrakcyjnego myślenia.
• Doskonalenie myślenia algorytmicznego.
• Programowanie i rozwiązywanie problemów z wykorzystaniem komputera oraz
innych urządzeń cyfrowych, poprzez układanie i programowanie algorytmów.
• Zgłębianie znajomość zasad działania urządzeń cyfrowych oraz wykonywania programów.
• Rozwijanie kompetencji społecznych, takich jak: komunikacja i współpraca w grupie, udział w projektach zespołowych oraz organizacja i zarządzanie projektami.
Cele szczegółowe
Uczeń potrafi:
• Wyjaśnić co to jest serwomotor i do czego może być wykorzystany.
• Wyjaśnić zasady sterowania serwomotorem.
• Podłączyć serwomotor do adaptera LOFI Brain
• Ustawić serwomotor na konkretnej pozycji wykorzystując funkcję servo(wyjście, wartość);
• Napisać program sterujący serwomotorem za pomocą potencjometru.
Treści programowe (związek z podstawą programową)
Podstawa programowa z informatyki – szkoła podstawowa:
Etap II – klasy IV – VIII, w tym klasy VII – VIII: I.1.b, I.2.a, I.2.b, I.2.c, I.3, II.1.b, II.3, III.3, IV.1, IV.2, IV.3, IV.4,
Etap II – klasy VII-VIII: I.1, I.2.a, I.4, II.1, II.2, II.5, III.3, IV.1.
Pojęcia kluczowe
• serwomotor / serwo
• funkcje (setup, loop, write, delay, read, buzzer, distance, servo)
• funkcja warunkowa
• iteracja
Metody pracy
• Wykład problemowy,
• Pogadanka,
• Dyskusja dydaktyczna związana z wykładem,
• Pokaz,
• Ćwiczenia laboratoryjne.
Materiały pomocnicze
• Zestaw LOFI Robot CODEBOX z rozszerzeniem CODEBOX Tv,
• Komputery stacjonarne lub przenośne z zainstalowanym Arduino IDE,
• Komputer nauczyciela z zainstalowanym Arduino IDE, projektor, tablica projekcyjna.
Czas na realizację zajęć:
1 godzina lekcyjna (45 minut)
Przebieg zajęć
1. Wprowadzenie w tematykę i integracja grupy:
Czas na realizację tej części: ok 5 minut.
Pytamy uczniów o czym rozmawialiśmy podczas ostatniej lekcji?
• poznaliśmy kilka różnych funkcji z biblioteki LOFI: write(wyjście, wartość); read(wejście); buzzer(stan); i distance();
• nauczyliśmy się deklarować zmienne,
• definiujemy własne funkcje z parametrami,
• piszemy proste programy i wgrywamy ja na płytkę Arduino,
• podłączamy do płytki urządzenia wejścia (potencjometr, czujnik odległości, czujnik natężenia światła) i wyjścia (diody, buzzer).
ZWIŃ ▲
2. Część zasadnicza:
Czas na realizację tej części: ok 35 minut.
Dziś poznacie zasadę działania oraz programowania serwomotoru.
Zadajemy uczniom pytanie: Czym wiecie co to jest serwomotor i do czego służy? Jak inaczej może być nazywany?
• serwomotor, inaczej: silnik serwo, silnik krokowy, serwo,
• zazwyczaj jest to silnik elektryczny z przekładnią, na wyjściu której zamontowany jest czujnik położenia osi, z odpowiednią elektroniką sterującą
• dzięki czujnikowi położenia serwo można wysterować tak, aby obróciło się o pewien konkretny kąt i pozostało w tym położeniu itd.
• przykładem zastosowania serwomotoru jest ramię robota, ster samolotu, automatycznie otwierane i zamykane drzwi itp.
Przedstawiciel każdej grupy uczniów bierze od nauczyciela przypisany danej grupie zestaw. Uczniowie siadają przy komputerach.
Prosimy uczniów aby włączyli komputery, zalogowali się i uruchomili Arduino IDE oraz wyjęli z zestawów płytkę Arduino i serwomotor.
Zasady sterowania silnikiem serwo:
• podstawowy program w bibliotece LOFI ustawia silnik serwo na zadaną pozycję (50)
• zakres ruchu serwomotoru to 0-100
• funkcją, która będzie bezpośrednio sterowała serwomotorem jest natomiast servo(wyjście, wartość);
Przykład / Ćwiczenie 13
Przepisz poniższy kod, który odpowiedzialny jest za konfigurację serwomotoru i ustawienie silnika w pozycji 50. Zapisz plik jako “zadanie_13”, zweryfikuj program, podłącz serwomotor do OUTPUT1 oraz wgraj na płytkę.
#include <LOFI.h> LOFI robot; int pozycja = 0; //deklaracja zmiennej pozycja i przypisanie jej początkowej wartości 0; void setup() { } void loop() { robot.servo(OUTPUT1, 50); // funkcja servo(wyjście, wartość); tu ustawia wartość 50 silnikowi podłączonemu do OUTPUT1 }
Zadanie 14
Napisz program sterujący serwomotorem podłączonym do OUTPUT1 za pomocą potencjometru podłączonego do INPUT2. Zapisz plik jako “zadanie_14”, zweryfikuj program oraz wgraj na płytkę.
Przykładowe rozwiązanie:
#include <LOFI.h> LOFI robot; void setup() { } void loop() { int potencjometr = robot.read(INPUT2); // odczyt wartości potencjometru podłączonego do INPUT2 robot.servo(OUTPUT1, potencjometr); //sterowanie serwomotorem podłączonym do OUTPUT1 przy pomocy zmiennej potencjometr }
Przykład / Ćwiczenie 15
Serwomotor sterowany automatycznie? Czemu nie!
Najpierw musimy zadeklarować nową zmienną “pozycja”. Zmienna ta z każdym powtórzeniem pętli loop() {} ma być zwiększana o 1. Mamy więc tu do czynienia z powtórzeniem czyli iteracją. Kiedy POZYCJA przekroczy wartość maksymalną czyli 100, to ustawiamy ją z powrotem na 0. Mamy więc tu do czynienia z funkcją warunkową if() {}; która odpowiedzialna będzie za iterację, aż do momentu spełnienia warunku.
Przepisujemy i analizujemy poniższy przykład (przykład ten można wgrać z Plik > Przykłady > LOFI > lofi_servo_auto
Warto zapisać plik jako “zadanie_15”, zweryfikować program oraz wgrać na płytkę.
#include <LOFI.h> LOFI robot; int pozycja = 0; //deklaracja nowej zmiennej pozycja i przypisanie jej początkowej wartości 0 void setup() { } void loop() { pozycja = pozycja + 1; //zmienna pozycja za każdym powtórzeniem pętli loop() będzie zwiększana o 1 if (pozycja > 100) { pozycja = 0; } // po zwiększeniu pozycji o 1, mamy funkcję warunkową if, która sprawdza // czy zmienna pozycja nie jest przypadkiem większa od 100, // jeśli warunek ten zostanie spełniony, wówczas zmiennej pozycja ponownie zostanie przypisana wartość 0 robot.servo(OUTPUT1, pozycja); // funkcja servo, która ustawia silnik podłączony do OUTPUT1 // na taką pozycję jak aktualna wartość zmiennej pozycja delay(40); // koniecznie funkcja delay-czekaj, aby pętla loop nie była wykonywana zbyt szybko // zwiększenie lub zmniejszenie parametru tej funkcji // będzie powodowało wolniejszą lub szybszą pracę “programu” i serwomotoru }
W zależności od pozostałego czasu można dać uczniom kilka minut na zmiany powyższego kodu i obserwowanie efektu.
Pytamy uczniów do czego można by wykorzystać możliwości serwomotorów? Słuchamy odpowiedzi – pomysłów uczniów.
3. Podsumowanie i ewaluacja:
Czas na realizację tej części: ok. 5 minut.
Prosimy aby uczniowie ostrożnie spakowali zestawy. Jeden przedstawiciel każdej grupy przynosi zestaw na wyznaczone przez nauczyciela miejsce w klasie.
Zadajemy uczniom pytanie: Czego nauczyliśmy się na dzisiejszej lekcji?
• dowiedzieliśmy się czym jest serwomotor i do czego może być wykorzystany,
• nauczyliśmy się sterować serwomotorem.
Na zakończenie mówimy uczniom, że na kolejnej lekcji nauczymy się sterować wyświetlaczem RGB 8×8.