KWALIFIKACJA ELM5 - TEST WIEDZY NR 10

PYTANIE NR 3.
Rozważ następujący fragment kodu:
void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}
Jaki typ sygnału generuje ten kod?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Kod ustawia pin 13 jako wyjście, a następnie cyklicznie wymusza stany HIGH i LOW z opóźnieniami po 1000 ms. Na pinie pojawia się więc sygnał dwustanowy (0/1), czyli sygnał cyfrowy o przebiegu prostokątnym, a nie analogowy ani sinusoidalny czy trójkątny.

Pełne wyjaśnienie:

Program ustawia pin 13 jako wyjście (pinMode(13, OUTPUT)), a następnie w pętli nieskończonej wykonuje sekwencję: ustaw stan wysoki, odczekaj, ustaw stan niski, odczekaj.

Funkcja digitalWrite służy do ustawiania stanów logicznych na wyjściu: HIGH (logiczna "1") albo LOW (logiczne "0"). To oznacza, że napięcie na wyprowadzeniu nie zmienia się płynnie jak w sygnale analogowym, tylko przyjmuje jeden z dwóch poziomów, zależnie od użytego mikrokontrolera/układu.

Opóźnienia delay(1000) sprawiają, że stan wysoki trwa około 1 s, a stan niski około 1 s. W efekcie na wyjściu powstaje przebieg okresowy, który ma dwa poziomy i gwałtowne przejścia między nimi, czyli przebieg prostokątny (sygnał cyfrowy). Pełny okres wynosi w przybliżeniu 2 s, więc częstotliwość to około 0,5 Hz.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • "Sygnał analogowy" wymagałby płynnej zmiany wartości (np. użycia przetwornika DAC lub PWM interpretowanego po filtracji). Tutaj program ustawia wyłącznie dwa stany.
  • "Sygnał sinusoidalny" to gładki przebieg o kształcie sinusa, typowy np. dla generatorów analogowych. W kodzie nie ma mechanizmu kształtowania sinusa.
  • "Sygnał trójkątny" również wymaga narastania i opadania liniowego w czasie. Tu występuje skokowa zmiana stanu, a nie rampa.

W praktyce taki kod jest klasycznym przykładem "blink" i służy do sprawdzenia działania wyjścia cyfrowego oraz podstaw sterowania elementami w trybie załącz/wyłącz.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Sygnał cyfrowy to sygnał dwustanowy, w którym wyjście przyjmuje zwykle tylko dwa poziomy: LOW (0) i HIGH (1). W praktyce oznacza to przełączanie napięcia wyjściowego między poziomem niskim i wysokim, bez płynnej regulacji wartości jak w sygnale analogowym.
Funkcja digitalWrite ustawia stan logiczny na wskazanym pinie skonfigurowanym jako wyjście. Dla pinu 13 ustawienie HIGH powoduje stan wysoki, a ustawienie LOW stan niski. To tworzy przełączanie "0/1", typowe dla sygnałów cyfrowych.
Przebieg prostokątny powstaje, gdy sygnał skokowo przechodzi między dwoma poziomami i utrzymuje każdy poziom przez pewien czas. W kodzie stan HIGH trwa ok. 1000 ms, potem stan LOW trwa ok. 1000 ms, więc sygnał ma dwa poziomy i ostre zbocza przełączania.
Okres to suma czasu HIGH i LOW. Tu jest to ok. 1000 ms + 1000 ms = 2000 ms, czyli 2 s. Częstotliwość to odwrotność okresu: 1/2 s = 0,5 Hz. To proste obliczenie często pojawia się w zadaniach o generowaniu sygnałów.
Nie. Sam fakt, że na pinie występuje napięcie, nie oznacza sygnału analogowego. O analogowym sygnale mówimy, gdy wartość zmienia się płynnie w czasie i może przyjmować wiele poziomów. Tutaj program przełącza wyłącznie dwa stany: HIGH i LOW.
W typowych układach Arduino "analogowy" efekt uzyskuje się przez PWM (np. funkcją analogWrite) i ewentualne filtrowanie, albo przez zewnętrzny przetwornik DAC. Natomiast digitalWrite nie generuje przebiegów o płynnie zmieniającej się amplitudzie.
To klasyczny test działania płytki i programu: miganie diodą LED (często wbudowaną), sprawdzenie wyjścia cyfrowego, a także prosty sygnał diagnostyczny. W praktyce podobny kod bywa używany do sygnalizacji stanu urządzenia lub testów serwisowych.
Sygnał sinusoidalny i trójkątny wymagają kształtowania przebiegu w czasie (ciągłych zmian wartości). Ten program nie wylicza kolejnych próbek amplitudy, tylko ustawia dwa stałe poziomy. Przez to uzyskujemy prostokąt (dwustan), a nie sinus ani trójkąt.
Częsty błąd to utożsamienie "sygnału okresowego" z sinusem, bo sinus kojarzy się z elektroniką. Inny błąd to pominięcie, że digitalWrite jest funkcją dla stanów logicznych. Uczniowie też czasem mylą PWM z wyjściem cyfrowym przełączanym rzadko.
Szukaj wskazówek w nazwach i działaniach: pinMode(..., OUTPUT) oraz digitalWrite(..., HIGH/LOW) oznaczają sterowanie stanami logicznymi. Jeśli wartości przełączają się między dwoma stanami, to jest sygnał cyfrowy (często o przebiegu prostokątnym).
info

To pytanie poprawnie rozwiązuje 83% zdających egzamin. średnio łatwe

W praktyce zawodowej kluczowe jest to, że kod ustawia pin 13 jako wyjście, a następnie cyklicznie wymusza stany HIGH i LOW z opóźnieniami po 1000 ms.

Źródła:

  • Arduino Language Reference: pinMode() – https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/ (dostęp 2026-03-01)
  • Arduino Language Reference: digitalWrite() – https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/ (dostęp 2026-03-01)
  • Arduino Language Reference: delay() – https://www.arduino.cc/reference/en/language/functions/time/delay/ (dostęp 2026-03-01)

Materiały:

  • Dokumentacja środowiska Arduino: opis funkcji pinMode(), digitalWrite(), delay() oraz przykłady
  • Podręcznik z podstaw techniki cyfrowej (stany logiczne, przebiegi prostokątne)
  • Wprowadzenie do mikrokontrolerów: porty GPIO i ich tryby pracy

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego