KWALIFIKACJA ELM6 - TEST WIEDZY NR 2

PYTANIE NR 12.
Otrzymałeś do naprawy urządzenie mechatroniczne, które nie działa poprawnie. Poniżej przedstawiono fragment kodu programu sterującego tym urządzeniem:
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}
Na podstawie powyższego kodu, które z poniższych stwierdzeń jest prawdziwe?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Kod ustawia pin 13 jako wyjście, a następnie w pętli włącza stan HIGH na 1000 ms i wyłącza (LOW) na kolejne 1000 ms. Oznacza to cykliczne przełączanie wyjścia co 1 sekundę, typowo używane do migania diodą LED podłączoną do pinu 13.

Pełne wyjaśnienie:

Program ma typową strukturę dla środowiska mikrokontrolerowego: część inicjalizacyjna setup() wykonuje się raz po uruchomieniu, a loop() powtarza się w nieskończoność.

W setup() wywołanie pinMode(13, OUTPUT) konfiguruje pin 13 jako wyjście cyfrowe. Oznacza to, że program będzie wystawiał na nim stan logiczny (zwykle 0/1, LOW/HIGH), aby sterować podłączonym elementem.

W loop() najpierw wykonywane jest digitalWrite(13, HIGH), czyli ustawienie stanu wysokiego. Następnie delay(1000) wstrzymuje wykonywanie programu na około 1000 ms (1 sekundę). Potem program ustawia digitalWrite(13, LOW) i znów czeka delay(1000).

W efekcie wyjście jest w stanie HIGH przez 1 s i w stanie LOW przez 1 s, a cały cykl trwa około 2 s. Taki przebieg jest klasycznym sposobem realizacji migania diody LED: okresowo ją włączamy i wyłączamy.

Dlaczego pozostałe stwierdzenia są nieprawdziwe?

  • Silnik krokowy wymaga sekwencji sygnałów na kilku liniach lub impulsów krok/kierunek, a nie pojedynczego przełączenia HIGH/LOW raz na sekundę.
  • Czujnik temperatury nie jest "sterowany" przez digitalWrite() w ten sposób; typowo wykonuje się odczyt z wejścia analogowego/cyfrowego lub przez magistralę, a w kodzie nie ma żadnej instrukcji odczytu.
  • Serwomechanizm zwykle potrzebuje sygnału PWM o określonej szerokości impulsu (lub biblioteki serwo), a tu jest tylko stałe HIGH/LOW z długimi opóźnieniami.

W praktyce serwisowej mechatronika taki program bywa używany jako szybki test: jeśli dioda "mruga", to mikrokontroler działa, zegar i pętla programu wykonują się poprawnie, a wyjście cyfrowe przełącza stan zgodnie z założeniem.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Ustawia pin 13 jako wyjście cyfrowe. Dzięki temu mikrokontroler może na tym pinie wystawiać stany HIGH i LOW, czyli włączać/wyłączać podłączony element (np. diodę LED przez rezystor).
digitalWrite() ustawia stan logiczny na wyjściu. HIGH oznacza stan wysoki (zwykle napięcie zbliżone do zasilania), a LOW stan niski (zwykle 0 V). To jest sterowanie dwustanowe, a nie płynna regulacja.
Pierwsze delay(1000) utrzymuje stan HIGH przez około 1 sekundę, a drugie utrzymuje stan LOW przez kolejną 1 sekundę. Dzięki temu widać wyraźne "włączenie" i "wyłączenie" w regularnych odstępach.
Dioda jest włączona przez 1 s i wyłączona przez 1 s, więc pełny cykl trwa około 2 sekundy. To odpowiada miganiu: zmiana stanu następuje co 1 sekundę, ale "częstotliwość cyklu" to około 0,5 Hz.
Nie. Serwomechanizm zwykle wymaga sygnału PWM o określonej szerokości impulsu (np. generowanego przez bibliotekę serwo). Tutaj jest tylko przełączanie stanu HIGH/LOW z długimi opóźnieniami, co nie ustawia kąta serwa.
Silnik krokowy potrzebuje sekwencji sterowania (kilka faz) albo impulsów "krok" i sygnału "kierunek". Pojedynczy pin przełączany raz na sekundę nie tworzy wymaganej sekwencji kroków, więc nie opisuje typowego sterowania krokowcem.
Wskazuje to konfiguracja OUTPUT w pinMode oraz użycie digitalWrite(). Do odczytu czujników stosuje się zwykle digitalRead(), analogRead() lub komunikację po magistrali, czego w tym kodzie nie ma.
Należy zmienić wartości w delay(...). Mniejsza wartość da szybsze przełączanie, większa – wolniejsze. Przykładowo delay(200) spowoduje 0,2 s włączenia i 0,2 s wyłączenia, więc miganie będzie dużo szybsze.
Najpewniej sprawdza się to w dokumentacji konkretnej płytki lub jej schemacie. W wielu popularnych płytkach Arduino dioda "L" bywa powiązana z pinem 13, ale nie jest to reguła dla wszystkich mikrokontrolerów i klonów.
To szybki test uruchomieniowy: potwierdza działanie zasilania, mikrokontrolera, kompilacji i wgrywania programu oraz poprawność przełączania wyjść. W serwisie mechatronicznym często używa się go jako "heartbeat" przed dalszą diagnostyką.
info

To pytanie poprawnie rozwiązuje 67% zdających egzamin. średnie

W praktyce zawodowej kluczowe jest to, że kod ustawia pin 13 jako wyjście, a następnie w pętli włącza stan HIGH na 1000 ms i wyłącza (LOW) na kolejne 1000 ms.

Źródła:

  • Arduino Documentation: pinMode() reference (Language Reference), https://docs.arduino.cc/language-reference/en/functions/digital-io/pinMode/ - accessed 2026-02-28
  • Arduino Documentation: digitalWrite() reference (Language Reference), https://docs.arduino.cc/language-reference/en/functions/digital-io/digitalwrite/ - accessed 2026-02-28
  • Arduino Documentation: delay() reference (Language Reference), https://docs.arduino.cc/language-reference/en/functions/time/delay/ - accessed 2026-02-28

Materiały:

  • Dokumentacja środowiska Arduino: opisy pinMode(), digitalWrite() i delay()
  • Materiały dydaktyczne z podstaw mikrokontrolerów i IO cyfrowego
  • Ćwiczenia laboratoryjne: "Blink" i jego modyfikacje (zmiana pinów i czasów)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego