KWALIFIKACJA ELM5 - TEST WIEDZY NR 4

PYTANIE NR 31.
Rozważ następujący fragment kodu:
#define LED_PIN 13
void setup() {
  pinMode(LED_PIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
}
Co robi ten kod?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Kod ustawia pin 13 jako wyjście, a następnie w pętli loop() cyklicznie ustawia stan HIGH i LOW.
Po włączeniu (HIGH) czeka 1000 ms, potem wyłącza (LOW) i znów czeka 1000 ms. W efekcie dioda (lub wyjście) miga: 1 s świeci, 1 s jest zgaszona, i tak bez końca.

Pełne wyjaśnienie:

Program definiuje stałą LED_PIN równą 13 i w funkcji setup() wykonuje jednorazową konfigurację: pinMode(LED_PIN, OUTPUT). Oznacza to, że pin 13 ma pracować jako wyjście cyfrowe, czyli mikrokontroler może na nim wymuszać stany logiczne.

W funkcji loop() (wykonywanej w nieskończonej pętli) kod realizuje sekwencję:

  • ustawienie stanu wysokiego: digitalWrite(LED_PIN, HIGH) – dioda podłączona do tego pinu (typowo przez rezystor) świeci,
  • odczekanie delay(1000), czyli 1000 milisekund = 1 sekunda,
  • ustawienie stanu niskiego: digitalWrite(LED_PIN, LOW) – dioda gaśnie,
  • ponowne odczekanie delay(1000) = 1 sekunda.

Cały cykl trwa ok. 2 sekundy i powtarza się bez końca, więc poprawny opis to: świeci 1 s, gaśnie 1 s.

Dlaczego pozostałe odpowiedzi są błędne:

  • "1 milisekunda" – wynika z błędnego odczytania parametru funkcji delay(). W tym środowisku jest on w milisekundach, więc 1000 to 1000 ms, nie 1 ms.
  • "Włącza na stałe" – pomija instrukcję ustawiającą LOW oraz opóźnienia; stan jest przełączany, więc nie jest stały.
  • "Wyłącza na stałe" – analogicznie, pomija ustawienie HIGH; program cyklicznie włącza i wyłącza wyjście.

W praktyce taki kod jest typowym "blink testem" używanym do sprawdzenia, czy mikrokontroler wykonuje program i czy wyjście GPIO działa poprawnie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Instrukcja pinMode(..., OUTPUT) ustawia dany pin mikrokontrolera jako wyjście cyfrowe. Dzięki temu program może wymuszać na nim stan wysoki lub niski (HIGH/LOW), czyli w praktyce włączać lub wyłączać podłączony element, np. diodę LED przez rezystor.
digitalWrite(pin, HIGH) ustawia na wskazanym wyjściu stan logiczny wysoki. W typowym układzie z diodą LED oznacza to podanie napięcia na pin i przepływ prądu przez diodę (z rezystorem), więc LED świeci. Gdy ustawisz LOW, napięcie spada i dioda gaśnie.
W tym środowisku parametr funkcji delay() podaje się w milisekundach. Dlatego 1000 oznacza 1000 ms, czyli 1 s. To częsty punkt na egzaminie: trzeba pamiętać o jednostkach czasu w funkcjach opóźnień, aby poprawnie interpretować działanie programu.
setup() wykonuje się tylko raz po uruchomieniu lub resecie mikrokontrolera. Umieszcza się tam konfigurację sprzętu, np. ustawienie trybu pinów, uruchomienie interfejsów komunikacyjnych czy inicjalizację zmiennych. W tym zadaniu setup() przygotowuje pin 13 do pracy jako wyjście.
loop() jest wykonywana w kółko tak długo, jak działa mikrokontroler. Po dojściu do końca funkcji sterownik wraca na jej początek. Ponieważ w pętli jest sekwencja HIGH → czekaj → LOW → czekaj, stan pinu zmienia się cyklicznie, więc dioda miga w sposób ciągły.
Sprawdź, czy po ustawieniu HIGH pojawia się później ustawienie LOW (lub odwrotnie). Jeśli występują oba stany w pętli i są rozdzielone opóźnieniami, to znaczy, że wyjście jest przełączane, czyli dioda miga. Gdy jest tylko HIGH lub tylko LOW bez zmian, stan byłby stały.
Najczęstszy błąd to pomylenie jednostek i uznanie, że delay(1000) to 1000 sekund albo 1 milisekunda. Drugi błąd to ignorowanie tego, że delay() zatrzymuje wykonywanie programu na dany czas. Na egzaminie zawsze przelicz 1000 ms = 1 s i analizuj kolejność instrukcji.
W wielu popularnych płytkach rozwojowych pin 13 jest połączony z diodą sygnalizacyjną, ale nie jest to gwarantowane dla każdego modelu. Egzamin zwykle sprawdza rozumienie zasady działania kodu: program przełącza stan wyjścia na pinie 13. Fizyczny efekt zależy od tego, co jest do tego pinu podłączone.
Częstotliwość migania zależy od czasów opóźnień. Jeśli skrócisz oba opóźnienia, dioda będzie migać szybciej; jeśli je wydłużysz, wolniej. Przykładowo zmiana na delay(200) da krótkie błyski, a delay(2000) spowoduje 2 s świecenia i 2 s przerwy. Zawsze pamiętaj: wartości są w milisekundach.
HIGH i LOW to stany logiczne na wyjściu cyfrowym. LOW oznacza stan niski (zwykle blisko 0 V), a HIGH stan wysoki (zwykle blisko napięcia zasilania logiki, np. 5 V lub 3,3 V zależnie od układu). W praktyce te poziomy sterują elementami wykonawczymi, np. LED.
info

Statystycznie 62% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Kod ustawia pin 13 jako wyjście, a następnie w pętli loop() cyklicznie ustawia stan HIGH i LOW.Po włączeniu (HIGH) czeka 1000 ms, potem wyłącza (LOW) i znów czeka 1000 ms."

Źródła:

  • Arduino Documentation – pinMode(): https://docs.arduino.cc/language-reference/en/functions/digital-io/pinmode/ (dostęp: 2026-02-18)
  • Arduino Documentation – digitalWrite(): https://docs.arduino.cc/language-reference/en/functions/digital-io/digitalwrite/ (dostęp: 2026-02-18)
  • Arduino Documentation – delay(): https://docs.arduino.cc/language-reference/en/functions/time/delay/ (dostęp: 2026-02-18)

Materiały:

  • Dokumentacja referencyjna funkcji pinMode(), digitalWrite(), delay() dla Arduino
  • Podstawy elektroniki cyfrowej: stany logiczne i sterowanie LED przez rezystor
  • Ćwiczenia laboratoryjne z mikrokontrolerami: konfiguracja GPIO i generowanie sygnałów

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego