KWALIFIKACJA ELM3 - TEST WIEDZY NR 1

PYTANIE NR 3.
Przyjrzyj się poniższemu fragmentowi kodu programowania mikrokontrolera:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Co robi ten kod?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Kod ustawia pin 13 jako wyjście, a w pętli włącza LED (HIGH) na 1 s i wyłącza (LOW) na 1 s, po czym powtarza to bez końca.
LED zmienia stan co sekundę, więc "miga". Pełny cykl trwa 2 s, czyli częstotliwość migania wynosi 0,5 Hz (nie 1 Hz).

Pełne wyjaśnienie:

Program ma typową strukturę Arduino: setup() wykonuje się raz po starcie, a loop() powtarza się w nieskończoność.

W setup() wywołanie pinMode(13, OUTPUT) ustawia pin 13 jako wyjście cyfrowe, czyli taki pin może wystawiać stan wysoki lub niski, aby sterować np. diodą LED (na wielu płytkach Arduino pin 13 jest połączony z wbudowaną diodą).

W loop() wykonywana jest sekwencja:

  • digitalWrite(13, HIGH) – ustawienie stanu wysokiego, czyli LED świeci (ON),
  • delay(1000) – zatrzymanie programu na 1000 ms (1 s),
  • digitalWrite(13, LOW) – ustawienie stanu niskiego, czyli LED gaśnie (OFF),
  • delay(1000) – ponownie 1 s przerwy.

Ponieważ całość jest w pętli loop(), dioda jest cyklicznie włączana i wyłączana, czyli po prostu miga. Dioda zmienia stan co 1 sekundę (raz się zapala, raz gaśnie), ale pełny okres migania to 1 s świecenia + 1 s zgaszenia = 2 s. Z tego wynika częstotliwość pełnego cyklu: f = 1/T = 1/2 s = 0,5 Hz.

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

  • "Steruje diodą LED z częstotliwością 1 Hz." – 1 Hz oznacza jeden pełny cykl na sekundę. Tutaj pełny cykl trwa 2 sekundy, więc jest 0,5 Hz. To częsty błąd wynikający z mylenia "co sekundę zmienia stan" z "1 Hz".
  • "Włącza diodę LED na stałe." – po włączeniu (HIGH) program po 1 s przechodzi do wyłączenia (LOW), więc nie ma świecenia ciągłego.
  • "Wyłącza diodę LED na stałe." – analogicznie, zanim dioda zostanie wyłączona, jest włączana na 1 s, a cały cykl stale się powtarza.

Wskazówka egzaminacyjna: gdy w kodzie widzisz naprzemienne HIGH i LOW rozdzielone delay(), policz czas świecenia i czas zgaszenia. Dopiero suma daje okres, a z okresu liczysz częstotliwość.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

setup() uruchamia się tylko raz po starcie lub resecie płytki.

Używa się jej do konfiguracji, np. ustawienia kierunku pinów przez pinMode(), inicjalizacji portu szeregowego i przygotowania urządzenia do pracy, zanim zacznie działać pętla loop().

loop() to pętla wykonywana bez końca.

Wszystko, co znajduje się w tej funkcji, będzie powtarzane cyklicznie: sterowanie wyjściami, odczyty wejść, obliczenia. Dlatego naprzemienne ustawianie HIGH/LOW w loop() daje efekt migania LED.

Wywołanie pinMode(13, OUTPUT) ustawia pin 13 jako wyjście cyfrowe.

Dzięki temu polecenia digitalWrite() mogą wymuszać stan HIGH lub LOW na tym pinie, co pozwala sterować diodą LED lub innym elementem podłączonym do pinu.

digitalWrite(13, HIGH) ustawia stan wysoki na pinie 13 (typowo LED świeci).

digitalWrite(13, LOW) ustawia stan niski (typowo LED gaśnie). W połączeniu z opóźnieniami tworzy to przebieg prostokątny i efekt migania.

Bo w pętli loop() stan pinu jest zmieniany naprzemiennie: najpierw HIGH (LED ON), potem LOW (LED OFF).

Pomiędzy zmianami są delay(1000), więc każda faza trwa 1 sekundę. To cykliczne włączanie i wyłączanie jest definicją migania.

Najpierw policz okres pełnego cyklu: 1 s świecenia + 1 s zgaszenia = 2 s.

Następnie częstotliwość: f = 1/T, więc f = 1/2 s = 0,5 Hz. To częsty punkt na egzaminie: "zmiana co 1 s" nie oznacza 1 Hz.

Na wielu popularnych płytkach Arduino pin 13 jest połączony z diodą LED na płytce, ale nie jest to absolutną regułą dla każdego klonu i każdej wersji.

Na egzaminie najczęściej przyjmuje się typowy przypadek, że pin 13 steruje diodą "L".

delay(ms) zatrzymuje wykonywanie programu na podany czas.

W trakcie opóźnienia mikrokontroler (w prostym ujęciu) nie wykonuje kolejnych instrukcji z loop(), więc trudno robić równolegle inne zadania. To ważne w praktyce mechatronicznej, gdy trzeba sterować kilkoma elementami jednocześnie.

"Blink" jest używany jako szybki test: czy płytka działa, czy program się wgrał i czy wyjścia reagują.

W urządzeniach mechatronicznych podobny mechanizm służy do sygnalizacji stanów (gotowość, błąd, praca), a także do prostego debugowania podczas uruchamiania układu.

Najczęstsze pomyłki to:

  • uznanie, że częstotliwość wynosi 1 Hz, bo "co sekundę",
  • pominięcie faktu, że loop() się powtarza,
  • założenie, że LED świeci stale po pierwszym HIGH.

Warto zawsze rozpisać kolejno: ON → czekaj → OFF → czekaj.

info

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

Eksperci podkreślają: "Kod ustawia pin 13 jako wyjście, a w pętli włącza LED (HIGH) na 1 s i wyłącza (LOW) na 1 s, po czym powtarza to bez końca.LED zmienia stan co sekundę, więc "miga"."

Źródła:

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

Materiały:

  • Dokumentacja Arduino: Reference dla pinMode(), digitalWrite(), delay()
  • Oficjalny przykład Arduino "Blink" (tutorial)
  • Podstawy elektroniki cyfrowej: stany logiczne i wyjścia mikrokontrolera

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego