Robot podążający za światłem
Scenariusz zajęć realizowanych zgodnie z metodologią STEM w oparciu o zasoby Zintegrowanej Platformy Edukacyjnej, opracowany w ramach rządowego programu wspierania organów prowadzących szkoły i placówki w rozwijaniu umiejętności cyfrowych dzieci i młodzieży na lata 2025‑2029 – „Cyfrowy Uczeń” (Dz.U.2025.1254)
Informacje ogólne
Imię i nazwisko autora: Roman Frąckowiak
Przedmiot wiodący:
informatyka
Filary metodologii STEM realizowane w ramach zajęć:
(S) przedmioty przyrodnicze
fizyka
(T) technologie
informatyka
(E) inżynieria
(M) matematyka
Etap edukacyjny:
III etap - szkoła ponadpodstawowa
liceum ogólnokształcące
technikum
szkoła branżowa
Pracownia STEM wspierana przez scenariusz:
P2: Konstruowanie i programowanie robotów
Czas potrzebny na realizację zajęć:
135 minut (3 godziny lekcyjne)
Sugerowany sposób organizacji czasu:
zajęcia realizowane w całości w sposób ciągły
Krótki opis zajęć
Scenariusz lekcji „Robot podążający za światłem” został opracowany z myślą o uczniach pracujących w interdyscyplinarnej pracowni STEM. Celem zajęć jest rozwijanie kompetencji z zakresu informatyki, fizyki, matematyki oraz technologii poprzez zaprojektowanie, zbudowanie i zaprogramowanie robota reagującego na światło. Lekcja zakłada wykorzystanie drukarki 3D, filamentów, długopisów 3D oraz programowalnych zestawów robotycznych, co umożliwia pełne doświadczenie procesu inżynieryjnego od koncepcji aż po testowanie gotowego urządzenia. Uczniowie, pracując w zespołach projektowych, uczą się planowania konstrukcji, analizy działania czujników światła, tworzenia algorytmów sterujących oraz iteracyjnego udoskonalania prototypu. Zajęcia rozwijają zarówno umiejętności pamięciowe, jak i kompetencje wyższego rzędu: rozumienie, zastosowanie wiedzy, analizowanie, ocenianie i twórcze rozwiązywanie problemów. Lekcja ma charakter badawczy, praktyczny i problemowy, kształci kompetencje przyszłości oraz zachęca do eksploracji robotyki jako dziedziny łączącej naukę, technologię i kreatywne projektowanie.
Tytuły i odnośniki do e‑materiałów z ZPE, w oparciu o które przygotowane są zajęcia
Cele lekcji oraz realizowane punkty podstawy programowej
Cel ogólny zajęć:
Celem lekcji jest rozwijanie interdyscyplinarnych kompetencji uczniów w obszarze STEM poprzez projektowanie, konstruowanie i programowanie robota podążającego za światłem, kształtowanie umiejętności inżynieryjnych, algorytmicznego myślenia i pracy zespołowej oraz zastosowanie wiedzy z informatyki, fizyki, matematyki i technologii w praktycznym, badawczym procesie tworzenia i doskonalenia prototypu.
Cele operacyjne w sferze kognitywnej zgodnie ze zrewidowaną taksonomią Blooma
Z zakresu pamiętania informacji
(przywoływanie istotnych informacji).
Uczeń:
omawia pojęcia takie jak: robot, czujnik światła, mikrokontroler, filament, drukarka 3D.
wskazuje elementy elektroniczne jakie można zastosować do budowy robota.
Z zakresu rozumienia informacji
(wyjaśnienie istotnych informacji).
Uczeń:
wyjaśnia, na jakiej zasadzie działa robot podążający za światłem — jak czujnik światła przekłada się na ruch robota;
wyjaśnia do czego służy ploter do cięcia i grawerowania.
Z zakresu zastosowania informacji
(rozwiązywanie problemów o zamkniętej strukturze, o jednoznacznym rozwiązaniu).
Uczeń:
projektuje i zbuduje prostego robota podążającego za światłem, korzystając z dostępnych czujników i elementów;
rozwiązuje problem o jednoznacznym rozwiązaniu: np. skonstruować robota poruszającego się w kierunku źródła światła.
Z zakresu analizowania, oceniania i tworzenia informacji
(rozwiązywanie problemów o otwartej strukturze, tworzenie własnych rozwiązań zadanych problemów, ocena dotycząca wartości idei lub materiałów).
Uczniowie:
proponuje własne modyfikacje robota (np. zmiana układu czujników, dodanie obudowy drukowanej 3D, optymalizacja działania);
ocenia w jaki sposób rozwiązanie radzi sobie z różnym natężeniem światła;
poprawia, usprawnia działanie robota, gdyby miał działać w większej przestrzeni.
Sposób realizacji zaplanowanych celów przez nauczyciela
dyskusja;
rozmowa nauczająca z wykorzystaniem multimedium i ćwiczeń interaktywnych;
praca indywidualna;
praca w parach;
praca w grupach;
praca całego zespołu klasowego.
Realizowane punkty podstawy programowej kształcenia ogólnego dla danego przedmiotu
Przygotowanie do zajęć
Przygotowanie nauczyciela
Zapoznać się z wybranymi materiałami na ZPE – przejrzeć „Rola robotyki w edukacji”, „Czym jest robotyka?”, oraz „Robotyka” i wybrać/zmodyfikować odpowiednie fragmenty.
Przygotować pracownię STEM – upewnić się, że dostępne są: komputery (do programowania), drukarka 3D + filamenty + długopisy 3D, zestawy programowalne / zestawy robotyczne (np. z czujnikami światła albo możliwość dodania czujników), narzędzia do montażu (śrubki, śrubokręty), ewentualnie elementy elektroniczne (czujniki światła, fotorezystory, przewody, baterie/akumulatory).
Zorganizować przestrzeń pracy w klasie – miejsca do pracy grupowej / zespołowej, stacje zadaniowe, bezpieczne miejsce do drukowania 3D.
Przygotować plan uwzględniający uczniów ze specjalnymi potrzebami edukacyjnymi (SPE) – wykorzystać wskazówki z dokumentu o indywidualnym planie edukacyjnym; zaplanować pracę w małych grupach; przygotować materiały alternatywne (np. infografiki, prezentacje, audio); ewentualne uproszczenia.
Co zrobić, aby zajęcia były dostępne dla wszystkich uczniów?
Aby zajęcia z informatyki były dostępne dla wszystkich uczniów – w tym tych ze specjalnymi potrzebami edukacyjnymi (SPE) – warto zaplanować je tak, aby uwzględniały różnorodne możliwości, tempo pracy oraz style uczenia się.
1. Dostosowanie przestrzeni i sprzętu
Zapewnienie ergonomicznych stanowisk pracy (regulowane krzesła, odpowiednia wysokość biurek).
Używanie oprogramowania udźwiękawiającego i powiększającego oraz czytników ekranu.
2. Dostosowanie treści i sposobu pracy
Przygotowanie instrukcji krok po kroku, najlepiej z przykładami.
Dzielnie zadań na mniejsze etapy, aby ułatwić wykonanie poleceń uczniom z trudnościami w koncentracji.
3. Zróżnicowanie metod nauczania
Prowadzenie pracy w parach lub małych grupach, co umożliwia wzajemne wsparcie.
Pozwalanie uczniom wybierać sposób wykonania zadania (prezentacja, projekt graficzny, program, nagranie), aby mogli pracować zgodnie ze swoimi mocnymi stronami
4. Indywidualizacja i dostosowania
Modyfikacja zakresu zadań (mniej elementów trudnych, więcej czasu na wykonanie).
Stosowanie poszerzenia dla uczniów zdolnych i uproszczenia dla uczniów z trudnościami.
5. Wsparcie komunikacyjne
Używanie jasnego, prostego języka.
Wspieranie poleceń grafikami, ikonami, piktogramami (np. dla uczniów ze spektrum autyzmu).
6. Współpraca specjalistów
Konsultowanie planu zajęć i materiałów pod kątem dostępności.
Włączanie asystenta nauczyciela, jeśli jest przewidziany dla ucznia.
7. Tworzenie atmosfery akceptacji
Wyjaśnianie zasad pracy zespołowej, promowanie tolerancji i wzajemnej pomocy.
Budowanie poczucia bezpieczeństwa i możliwości popełniania błędów.
8. Technologie wspierające
Aplikacje do nauki kodowania w formie wizualnej (Scratch, Blockly) dla uczniów mających trudności z czytaniem.
Oprogramowanie wspierające zdolności poznawcze, np. aplikacje treningowe dla uczniów z dysleksją lub dyskalkulią.
Przygotowanie uczniów
Aby zajęcia przebiegały sprawnie i efektywnie, uczniowie powinni odpowiednio przygotować się przed lekcją.
Zapoznanie się z materiałami teoretycznymi np. obejrzenie krótkiego filmu wyjaśniającego podstawowe pojęcia, np.: jak działa płytka stykowa, czym jest układ elektroniczny, wprowadzenie do Arduino czy robotów edukacyjnych.
Wykonanie zadania wstępnego np. prostego szkicu/wykresu (np. jak podłączyć LED do baterii).
Przygotowanie techniczne, sprawdzenie działania konta uczniowskiego w Tinkercad.
Kluczowe zasady bezpieczeństwa podczas zajęć
Kluczowe zasady bezpieczeństwa podczas zajęć z informatyki.
1. Bezpieczeństwo pracy przy komputerze
Zagrożenia:
przeciążenie wzroku, bóle pleców i rąk wynikające z niewłaściwej postawy,
potknięcia i upadki spowodowane przewodami podłączonymi do komputerów,
przypadkowe utraty danych.
Jak unikać:
siedzieć prosto, z monitorem ustawionym na wysokości oczu,
utrzymywać porządek przy stanowisku pracy, nie dotykać kabli i nie odłączać ich bez zgody nauczyciela,
zapisywać pracę regularnie i korzystać z bezpiecznych nośników danych.
2. Bezpieczeństwo podczas pracy z elektroniką i Arduino
Zagrożenia:
zwarcia i uszkodzenie komponentów wskutek błędnego podłączenia,
oparzenia lub porażenia przy nieumiejętnym korzystaniu z zasilania,
uszkodzenie sprzętu komputerowego przez nieprawidłowe wpięcie płytki Arduino.
Jak unikać:
montować obwody tylko na płytkach stykowych, bez lutowania
przed podłączeniem do zasilania sprawdzić układ co najmniej dwa razy,
używać rezystorów przy elementach wymagających ograniczenia prądu (LED, czujniki),
nie dotykać metalowych części układu, kiedy jest podłączony do portu USB,
zgłaszać nauczycielowi wszelkie podejrzane zapachy, nagrzewanie się elementów lub błędy działania.
3. Bezpieczeństwo w pracy zespołowej
Zagrożenia:
konflikty wynikające z nieporozumień,
niekontrolowane działania jednego ucznia mogące zagrozić całej grupie.
Jak unikać:
dzielić się obowiązkami zgodnie z rolami (projektant, konstruktor, programista, tester),
komunikować wszystkie zamiary dotyczące zmian w projekcie,
zachowywać się odpowiedzialnie i respektować polecenia nauczyciela
4. Cyberbezpieczeństwo i higiena cyfrowa
Zagrożenia:
dostęp do niebezpiecznych treści,
przypadkowe pobranie szkodliwego oprogramowania,
utrata lub wyciek danych osobowych.
Jak unikać:
korzystać wyłącznie z zatwierdzonych przez nauczyciela stron i narzędzi,
nie pobierać plików z nieznanych źródeł,
nie udostępniać haseł i nie logować się na cudzych kontach,
wylogowywać się po zakończeniu pracy.
5. Zachowanie porządku i organizacja stanowiska
Zagrożenia:
potknięcia, przewrócenie sprzętu, uszkodzenia urządzeń,
zgubienie elementów konstrukcyjnych lub elektronicznych.
Jak unikać:
odkładać narzędzia i elementy do oznaczonych pojemników,
utrzymywać czyste biurko,
po zajęciach sprawdzać, czy nic nie zostało w gniazdach, kablach lub na podłodze.
Przebieg zajęć
Faza wprowadzająca
Czas [min] | Działania nauczyciela | Działania uczniów | Uwagi / wskazówki metodyczne |
|---|---|---|---|
5 min | Zaciekawienie uczniów: | Obserwacja prezentacji lub demonstracji: Próbują samodzielnie wskazać, co może odpowiadać za jego działanie robotów. | Zastosuj element zaskoczenia: |
5 min | Stworzenie sytuacji problemowej: | Udział w rozmowie problemowej: | Unikaj wykładu – stawiaj pytania: |
5 min | Nawiązanie do wiedzy wcześniejszej: | Weryfikacja wiedzy wyjściowej: | Odwołuj się do doświadczeń z fizyki i informatyki: Ułatwia to pokonanie bariery wejścia i buduje poczucie, że Arduino to połączenie umiejętności, które uczniowie już mają. |
3 min | Przedstawienie celów lekcji: | Uczniowie formułują cele na podstawie informacji od nauczyciela co będą dzisiaj wykonywać na lekcji. | Wprowadzaj cele w formie korzyści: Wzmacniaj motywację wewnętrzną: |
2 min | Wyjaśnienie zasad pracy i oczekiwań: | Dyskusja plenerowa (na tablicy / interaktywnej): „Dlaczego robotyka jest ważna? Jakie umiejętności możemy rozwijać dzięki robotyce?” | Zadbaj o bezpieczeństwo już w fazie wprowadzającej: |
Faza realizacyjna
Czas [min] | Działania nauczyciela | Działania uczniów | Uwagi / wskazówki metodyczne |
|---|---|---|---|
10 min | Zadanie Zaprojektowanie, zbudowanie i zaprogramowanie robota mobilnego, który reaguje na źródło światła i porusza się w jego kierunku, z wykorzystaniem narzędzi cyfrowych oraz druku 3D. | Uczniowie dzielą się na grupy projektowe Uczniowie tworzą plam działania. Projektowanie robota. Zapoznanie z zasadą działania czujników. Montaż platformy, elementów jezdnych i czujników. Projektowanie i drukowanie osłon pojazdu. Pisanie programu Test działania | Jest to działanie praktyczne. Zadaniem uczniów jest zaprojektowanie |
10 min | Nauczyciel zwraca uwagę na czujnik światłą.
LDR podłączone w dzielniku napięcia z rezystorem 10 komega Silniki DC (mostek H)
| Zapoznają się z zasadą działania czujników światłą fotorezystor, LDR), mikrokontrolerem Arduino Uno, serwomechanizmem, źródłem zasilania | Uczniowie tworzą dokumentacje pojazdu (zrzuty ekranu, opis połączeń) |
20 min | Montaż robota
|
| Na tym etapie uczniowie montują robota |
20 min | Druk 3D Nauczyciel nadzoruje projektowanie i wydruk. Wyjaśnia jest wsparciem technicznym |
|
|
30 min | Pisanie programu Nauczyciel przedstawia możliwe środowiska:
|
| W tym etapie uczniowie tworzą program sterujący ruchem robota. Podczas pisania programu testują działanie i oprawiają kod. Etapu projektowania i testowania w tym przypadku są połączone. Testowanie odbywa sie na bieżąco, bp ważnym elementem jest płynne przemieszczanie się robota podczas omijania przeszkód. Każde koło musi kręcić się z inną prędkością. |
15 min | Testowanie robota
jakie zmiany można wprowadzić w kodzie lub konstrukcji. |
Jeśli używasz pinów PWM (5, 6, 9, 10), możesz sterować prędkością: analogWrite(motorLeft1, 180); analogWrite(motorRight1, 180); |
jak można ulepszyć robota |
Faza podsumowująca
Czas [min] | Działania nauczyciela | Działania uczniów | Uwagi / wskazówki metodyczne |
|---|---|---|---|
8 min | Czynności nauczyciela:
Nauczyciel dokonuje analizy:
| Uczeń:
| Zwracamy uwagę na działania uczniów podczas wykonywania działań związanych z realizacja projektu (w parach, grupach). Oceniamy zaangażowanie, sposób rozwiązywania problemu. Fazę podsumowującą realizować razem z działaniami uczniów, które mają na celu utrwalenie zdobytej wiedzy. Propozycja pytań podsumowujących.
|
2 min | Ewaluacja Nauczyciel dokonuje analizy:
| Uczniowie odpowiadają na krótkie pytania na koniec lekcji (ustnie lub pisemnie):
| Ewaluacja powinna obejmować zarówno proces uczenia się, jak i efekty pracy uczniów, a także pozwolić ustalić, czy zastosowane metody i środki dydaktyczne były skuteczne. |
Po zajęciach
Propozycja działań dla uczniów, które mają na celu integrację i utrwalenie zdobytej wiedzy
Zaproponuj uczniom udoskonalenie robota — wykonanie wymiennej obudowy, czujników odległości, światła LED, modułu zasilania, napisanie programu za pomocą którego pojazd np. unikanie przeszkód.
Narysowanie schematu, opisanie koncepcji działania oraz metod testowania pojazdu oraz wgranego programu.
Udostępnienie projektów np. w formie prezentacji, filmu, zdjęć poprzez umieszczenie na platformie ZPE.
Bibliografia i załączniki
Szczegółowy wykaz elementów e‑materiałów z ZPE wykorzystanych do opracowania scenariusza
Tytuł e‑materiału | Odnośnik | Element e‑materiału |
|---|---|---|
Czym jest robotyka? | Tekst zawierający informację co to jest robotyka. | |
Rola robotyki w edukacji | Infografika – zalety robotyki | |
Projekt Arduino | Instalacja oprogramowania do pisania kodu | |
Projekt Arduino | Dioda RGB, budowa i zasada działania | |
Arduino – robot omijający przeszkody | Opis czujnika HC‑SR04 | |
Arduino – robot omijający przeszkody | Przykładowy kod programu | |
Arduino – robot omijający przeszkody | Elementy sterujące robotem | |
Arduino – robot omijający przeszkody | Prezentacja multimedialna przedstawiająca mobilną platformę i elementy jezdne | |
Arduino – robot omijający przeszkody | Symulacja programu w aplikacji Tinkercad |
Inne niezbędne środki i pomoce dydaktyczne
Drukarka 3D, lub długopis 3D.
Programowalne zestawy robotyczne do nauki programowania.
Precyzyjne zestawy narzędziowe.
Ploter laserowy do cięcia i grawerowania z pochłaniaczem dymu.
Komputer z oprogramowaniem.
Programowalne kontrolery wraz z zestawami czujników.
Źródła literaturowe
Arduino – Przepis na rozpoczęcie, rozszerzenie i udoskonalenie projektów, Michael Margolis, Brian Jepson, Nicholas Robert Helion, Wyd. Helion 2021r
Michael Margolis, Brian Jepson, Nicholas Robert Helion, Wyd. Helion 2021r
Arduino 65 praktycznych projektów, John Boxall, Wyd. Helion 2014r.
https://www.arduino.cc/
Przykładowy program
Program dla Arduino Uno – Robot podążający za światłem
// —== CZUJNIKI ŚWIATŁA —==
const int ldrLeft = A0;
const int ldrRight = A1;
// —== SILNIKI —==
const int motorLeft1 = 5;
const int motorLeft2 = 6;
const int motorRight1 = 9;
const int motorRight2 = 10;
// Różnica światła potrzebna do skrętu
const int threshold = 50;
void setup() {
// Konfiguracja pinów silników
pinMode(motorLeft1, OUTPUT);
pinMode(motorLeft2, OUTPUT);
pinMode(motorRight1, OUTPUT);
pinMode(motorRight2, OUTPUT);
// Uruchomienie monitora portu szeregowego
Serial.begin(9600);
}
void loop() {
// Odczyt światła (0–1023)
int lightLeft = analogRead(ldrLeft);
int lightRight = analogRead(ldrRight);
// Wyświetlenie wartości
Serial.print(„Lewy: „);
Serial.print(lightLeft);
Serial.print(„ Prawy: „);
Serial.println(lightRight);
// Decyzja o ruchu robota
if (lightLeft > lightRight + threshold) {
turnLeft();
}
else if (lightRight > lightLeft + threshold) {
turnRight();
}
else {
moveForward();
}
delay(100);
}
// —== FUNKCJE RUCHU —==
void moveForward() {
digitalWrite(motorLeft1, HIGH);
digitalWrite(motorLeft2, LOW);
digitalWrite(motorRight1, HIGH);
digitalWrite(motorRight2, LOW);
}
void turnLeft() {
digitalWrite(motorLeft1, LOW);
digitalWrite(motorLeft2, LOW);
digitalWrite(motorRight1, HIGH);
digitalWrite(motorRight2, LOW);
}
void turnRight() {
digitalWrite(motorLeft1, HIGH);
digitalWrite(motorLeft2, LOW);
digitalWrite(motorRight1, LOW);
digitalWrite(motorRight2, LOW);
}
void stopRobot() {
digitalWrite(motorLeft1, LOW);
digitalWrite(motorLeft2, LOW);
digitalWrite(motorRight1, LOW);
digitalWrite(motorRight2, LOW);
}
Przykładowy program w Pythonie (MicroPython)
Połączenia (przykład)
LDR lewy → ADC0
LDR prawy → ADC1
Silniki → piny GPIO (przez mostek H)
Kod Python (MicroPython)
from machine import Pin, ADC
import time
Czujniki światła
ldr_left = ADC(0)
ldr_right = ADC(1)
Silniki
motor_left1 = Pin(5, Pin.OUT)
motor_left2 = Pin(6, Pin.OUT)
motor_right1 = Pin(9, Pin.OUT)
motor_right2 = Pin(10, Pin.OUT)
def move_forward():
motor_left1.on()
motor_left2.off()
motor_right1.on()
motor_right2.off()
def turn_left():
motor_left1.off()
motor_left2.off()
motor_right1.on()
motor_right2.off()
def turn_right():
motor_left1.on()
motor_left2.off()
motor_right1.off()
motor_right2.off()
while True:
light_left = ldr_left.read_u16()
light_right = ldr_right.read_u16()
print(„Lewy:”, light_left, „Prawy:”, light_right)
if light_left > light_right + 3000:
turn_left()
elif light_right > light_left + 3000:
turn_right()
else:
move_forward()
time.sleep(0.1)