Poznajemy funkcję read sterownika i moduły elektroniczne

W pierwszej części lekcji uczniowie nauczą się deklarować zmienne. Następnie poznają nowe funkcje sterownika LOFI.

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:
• Analizować szkice.
• Dokonywać poprawek, zapisywać, weryfikować i wgrywać na płytkę.
• Deklarować zmienną liczbową i przypisać jej wartość początkową.
• Modyfikować istniejące szkice zmieniając wartości liczbowe na zmienne.
• Posługiwać się funkcją write() i read().
• Przypisać wartość z funkcji read(); zmiennej i wykorzystać ją jako wartość funkcji write, np. sterować jasnością diody 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
• Arduino IDE
• szkic / program.
• otwórz, zapisz, zweryfikuj, wgraj.
• funkcje (setup, loop, write, delay, read)
• zmienna
• sterownik Arduino
• adapter LOFI Brain
• dioda
• potencjometr

Metody pracy
• Wykład problemowy,
• Dyskusja dydaktyczna związana z wykładem,
• Pokaz,
• Ćwiczenia laboratoryjne.

Materiały pomocnicze
• Zestaw LOFI Robot CODEBOX,
• Komputery stacjonarne lub przenośne z zainstalowanym Arduino IDE,
• Komputer nauczyciela z zainstalowanym Arduino IDE, projektor, tablica projekcyjna.

ZWIŃ ▲

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 co robiliśmy podczas ostatniej lekcji?
• umiemy uruchomić Arduino IDE,
• znamy składnię kodu w środowisku Arduino IDE,
• wykorzystujemy funkcję write z biblioteki LOFI,
• piszemy proste programy sterujące miganiem diod,
• umiemy wgrywać je na płytkę Arduino UNO,
• podłączamy do płytki urządzenia wyjścia.

Dziś będziemy deklarować zmienne, poznamy kolejne funkcje z biblioteki LOFI oraz nauczymy się definiować własne funkcje. Będziemy pisać proste programy, wgrywać ja na płytkę Arduino i testować ich działanie, podłączając różne urządzenia wejścia i wyjścia.

2. Część zasadnicza:

Czas na realizację tej części: ok 35 minut.

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. Prosimy aby otworzyli szkic “zadanie_3” z poprzedniej lekcji, podłączyli płytkę Arduino do komputera oraz dwie diody do OUTPUT1 i OUTPUT2. Prosimy aby wgrali program na płytkę.

Zadajemy uczniom pytania problemowe:
• Co trzeba zrobić, aby zmienić prędkość migania diod?
Odp: Zmienić wartość liczbową przy poleceniach delay.
• W ilu miejscach trzeba zmienić tą wartość?
Odp: W kilku lub kilkunastu, to zależy od stopnia skomplikowania programu.
• Jak myślicie, czy jest sposób na to, aby w szybszy sposób zmieniać prędkość migania diod?
Odp: Jest.

Wyjaśniamy:
• Zamiast zmieniać wartość liczbową w kilkunastu miejscach, możemy na początku programu zdefiniować własną zmienną.
• Sami możemy wymyślić dowolną nazwę tej zmiennej.
• Zmiennej możemy przypisać dowolną wartość liczbową.
• Następnie jako parametr w poleceniu delay(TU) zamiast liczby wpisujemy nazwę naszej zmiennej.
• Dzięki temu jeżeli zechcemy zmienić prędkość migania diod, to zamiast zmieniać wartość w kilkunastu miejscach, zmieniamy ją tylko raz przy definiowaniu zmiennej.
• Poleceniem, które służy do deklarowania nowej zmiennej jest int.
• Po nim: spacja i dowolna nazwa zmiennej (bez polskich znaków).
• Tak zdefiniowanej zmiennej możemy przypisać wartość liczbową:
int szybkosc = 200;
• Następnie w treści programu wszędzie tam, gdzie była wartość np. 200, wstawiany nazwę zmiennej np. szybkosc.

Przyjrzyjmy się przykładowi z Zadania 3, do którego wprowadzono zmienną “szybkosc”:

#include <LOFI.h>
LOFI robot;
//definicja nowej zmiennej szybkosc i jednoczesne przypisanie jej wartości 200
int szybkosc = 200; 
void setup() {
}

void loop() { 
robot.write(OUTPUT1, 100); 
// w poleceniu delay jako parametr zamiast dotychczasowej wartości 200, 
// wpisujemy nazwę zmiennej - szybkosc
delay(szybkosc);
robot.write(OUTPUT1, 0);
delay(szybkosc); //tu również zamiast wartości 200 wstawiamy nazwę szybkosc
robot.write(OUTPUT2, 100); 
delay(szybkosc); //tu również zamiast wartości 200 wstawiamy nazwę szybkosc
robot.write(OUTPUT2, 0);
delay(szybkosc); //tu również zamiast wartości 200 wstawiamy nazwę szybkosc
}

Zadanie 5
Zmodyfikuj plik z Zadania 3 tak jak na powyższym przykładzie, zapisz jako “zadanie_5”. Wgraj go na płytkę Arduino. Następnie spróbuj zmienić wartości deklarowanej zmiennej i sprawdź, czy rzeczywiście zmiana jednej wartość wpływa na działanie całego programu. Ćwiczenie powtórz przynajmniej 3 razy, za każdym razem wpisując inną wartość i sprawdzając działanie programu.

Zadanie 6
Zmodyfikuj plik z Zadania 4 deklarując dwie nowe zmienne. Przypisz tym zmiennym dwie różne wartości, a następnie w programie przy każdym poleceniu delay zamiast parametru liczbowego użyj odpowiednich nazw zmiennych. Zweryfikuj i wgraj program na płytkę Arduino.
Czas na wykonanie zadania: 10 minut. Jeżeli wykonasz zadanie przed czasem, spróbuj zmieniać wartości deklarowanych zmiennych i sprawdź, jak działa Twój program.
Przykładowe rozwiązanie:

#include <LOFI.h>
LOFI robot;
int czasswiecenia = 500; //definicja nowej zmiennej czasswiecenia i przypisanie jej wartości 500
int czasprzerwy = 200;  //definicja nowej zmiennej czasprzerwy i przypisanie jej wartości 200

void setup() {
}

void loop() { 
robot.write(OUTPUT1, 100);
delay(czasswiecenia); //użycie nowej zmiennej zamiast dotychczasowej wartości liczbowej
robot.write(OUTPUT1, 0);
delay(czasprzerwy); //użycie nowej zmiennej zamiast dotychczasowej wartości liczbowej
robot.write(OUTPUT1, 100);
delay(czasswiecenia);
robot.write(OUTPUT1, 0);
delay(czasprzerwy);
robot.write(OUTPUT2, 100); 
delay(czasswiecenia);
robot.write(OUTPUT2, 0); 
delay(czasprzerwy);
robot.write(OUTPUT2, 100); 
delay(czasswiecenia);
robot.write(OUTPUT2, 0); 
delay(czasprzerwy);
}

Znamy już funkcję write(wyjście, wartość) oraz umiemy deklarować własne zmienne. Czas poznać kolejne funkcje z biblioteki LOFI.

Funkcja read(wejście); służy do odczytywania wartości z wejść. Parametrem funkcji read jest wejście, czyli informacja z którego wejścia (INPUT1, INPUT2, INPUT3 czy INPUT4) ma zostać odczytana wartość. Wartości można odczytywać z urządzeń wejścia takich jak: potencjometr, czujnik natężenia światła, czy przycisk; podłączonych do gniazd INPUT1-4.

Przykład / Ćwiczenie 7
Przepisz poniższy kod. Do wejścia INPUT1 podłącz potencjometr, a do OUTPUT1 – diodę. Zapisz plik jako “zadanie_7”, zweryfikuj program i wgraj na płytkę.

#include <LOFI.h>
LOFI robot;
 
void setup() {
}
 
void loop() {
int potencjometr = robot.read(INPUT1);
// definiujemy nową zmienną potencjometr, której przypisujemy wartość 
// z urządzenia podłączonego o INPUT1
// zamiast słowa “potencjometr” możemy użyć dowolnego innego słowa lub litery
// definicja nowej zmiennej jest wewnątrz funkcji loop(), a nie na górze programu, 
// aby była odczytywana cały czas, a nie tylko jeden raz
robot.write(OUTPUT1, potencjometr); 
// wykorzystujemy znaną nam funkcję write, aby zaświeciła się dioda podłączona do OUTPUT1 
// z mocą taką samą, jak wartość odczytana z urządzenia połączonego do INPUT1, 
// zapamiętana jako zmienna “potencjometr”
}

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?
• wykorzystujemy różne funkcje z biblioteki LOFI,
• deklarujemy własne zmienne,
• 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).

Na zakończenie opowiadamy uczniom, co będziemy robić i czego się nauczymy podczas kolejnej lekcji: będziemy w dalszym ciągu pisać proste programy sterujące pracą diod i buzzera. Nauczymy się również definiować własne funkcje.

O autorze scenariusza:

Grzegorz Zawistowski

Grzegorz Zawistowski

Nauczyciel informatyki w szkole podstawowej. Miłośnik komputerów, nowinek technicznych i robotyki. Szkoleniowiec i trener m.in, w #Superkoderach i Mistrzach Kodowania.