Wyświetlacz 7-segmentowy to jeden z najpopularniejszych komponentów elektronicznych do prezentacji cyfr 0–9. W tym poradniku krok po kroku podłączysz go do Arduino i uruchomisz działający kod, który wyświetli cyfry dokładnie tak, jak chcesz.

Czym jest wyświetlacz 7-segmentowy?

Wyświetlacz 7-segmentowy składa się z ośmiu diod LED ułożonych w kształt segmentów: siedem głównych (A–G) oraz DP (decimal point – kropka). Każdy segment sterujesz niezależnie, a odpowiednia kombinacja zapalonych segmentów tworzy cyfry 0–9.

Zamiast zaawansowanych protokołów (I2C, SPI), wyświetlacz 7-segmentowy sterujemy bezpośrednio z pinów cyfrowych Arduino – to idealny komponent do nauki podstaw elektroniki i programowania.

Rodzaje wyświetlaczy 7-segmentowych

Wspólna katoda (CC) – wspólny minus (GND), segment świeci po podaniu stanu HIGH na jego pin.

Wspólna anoda (CA) – wspólny plus (VCC), segment świeci po podaniu stanu LOW na jego pin.

Kluczowe: piny na obudowie zwykle nie są opisane – koniecznie sprawdź datasheet, aby prawidłowo zidentyfikować piny segmentów i piny wspólne (COM).

Co będziesz potrzebować?

Do zbudowania podstawowego układu przygotuj:

  • płytka Arduino (np. Arduino Uno R3, Arduino Nano, ESP32),
  • wyświetlacz 7-segmentowy (CC lub CA),
  • płytka stykowa (breadboard),
  • 7–8 rezystorów 220 Ω (po jednym na każdy segment),
  • przewody połączeniowe (jumpers).

Na drodze każdego połączenia segmentu z Arduino musi znaleźć się rezystor ograniczający prąd – to absolutnie niezbędne dla ochrony diod LED.

Jak podłączyć wyświetlacz 7-segmentowy

Krok 1 – umieszczenie wyświetlacza na płytce stykowej

Umieść wyświetlacz na płytce stykowej tak, aby każdy pin wchodził w osobny rząd. Ułóż go centralnie, by połowa pinów była po lewej, a połowa po prawej stronie płytki.

Krok 2 – podłączenie pinu wspólnego (COM)

Dla CC (wspólna katoda): połącz jeden z pinów COM z szyną masy (-) na płytce, a następnie z GND w Arduino.

Dla CA (wspólna anoda): połącz jeden z pinów COM z szyną zasilania (+5 V). Drugi pin COM może pozostać niepodłączony.

Krok 3 – podłączenie segmentów

Każdy z ośmiu segmentów (A–G oraz DP) podłącz do osobnego pinu cyfrowego Arduino, koniecznie wstawiając w szereg rezystor. Poniżej przykładowe mapowanie pinów (możesz zmienić według potrzeb):

Segment Pin Arduino
A 11
B 7
C 3
D 5
E 6
F 10
G 2
DP opcjonalnie

Schemat połączenia (w szeregu): rezystor – segment – pin Arduino.

Programowanie wyświetlacza

Proste podejście (wspólna katoda)

Przy pojedynczej cyfrze nie potrzebujesz multipleksowania. Wystarczy włączać i wyłączać odpowiednie segmenty we właściwym momencie. Oto minimalny przykład, który wyświetla cyfrę 0:

int a = 11; // pin segmentu A
int b = 7; // pin segmentu B
int c = 3; // pin segmentu C
int d = 5; // pin segmentu D
int e = 6; // pin segmentu E
int f = 10; // pin segmentu F
int g = 2; // pin segmentu G

void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}

void loop() {
// Wyświetlenie cyfry 0 (A, B, C, D, E, F = ON; G = OFF)
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
delay(1000);
}

Uwaga (CA): dla wyświetlacza ze wspólną anodą odwróć logikę stanów (tam, gdzie jest HIGH użyj LOW i odwrotnie).

Profesjonalne podejście – tablica pinów

Zamiast definiować 8 oddzielnych zmiennych, zapisz numery pinów w tablicy i steruj nimi w pętli. To upraszcza kod i ułatwia rozbudowę. Przykładowa implementacja:

// Tablica pinów dla segmentów A–G
int pins[] = {11, 7, 3, 5, 6, 10, 2};

void setup() {
for (int i = 0; i < 7; i++) {
pinMode(pins[i], OUTPUT);
}
}

void displayDigit(int digit) {
// Mapa segmentów dla cyfr 0–9 (1 = włączony, 0 = wyłączony)
int digits[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};

for (int i = 0; i < 7; i++) {
digitalWrite(pins[i], digits[digit][i]);
}
}

void loop() {
for (int i = 0; i < 10; i++) {
displayDigit(i);
delay(1000);
}
}

Używanie bibliotek

Możesz skorzystać z biblioteki SevenSeg, aby jeszcze bardziej uprościć kod. Po instalacji biblioteki użyj poniższego przykładu:

#include <SevenSeg.h>

SevenSeg disp(11, 7, 3, 5, 6, 10, 2); // podłączenie segmentów A–G

const int numOfDigits = 1;
int digitPins[numOfDigits] = {12};

void setup() {
disp.setDigitPins(numOfDigits, digitPins);
disp.setTimer(2);
disp.startTimer();
}

void loop() {
// Wyświetlanie cyfr 0–9
for (int i = 0; i < 10; i++) {
disp.write(i);
delay(1000);
}
}

Zaawansowane techniki – rejestr przesuwny 74HC595

Gdy brakuje wolnych pinów, zastosuj rejestr przesuwny 74HC595. Dzięki niemu do sterowania wszystkimi segmentami użyjesz tylko 3 linii (zasilanie pomijamy). To rozwiązanie świetnie sprawdza się przy wielu wyświetlaczach.

Porady praktyczne

Poniższe wskazówki pomogą Ci uniknąć najczęstszych błędów:

  • testowanie segmentów – przed pisaniem pełnego programu sprawdź każdy segment osobno, zasilając go przez rezystor z Arduino, aby potwierdzić, że świeci;
  • dokumentacja (datasheet) – miej pod ręką kartę katalogową swojego modelu; tylko ona jednoznacznie wskazuje układ pinów i typ (CC/CA);
  • rezystory są obowiązkowe – nigdy nie pomijaj rezystorów ograniczających prąd; chronią diody LED przed uszkodzeniem;
  • czytelny kod – korzystaj z tablic i pętli zamiast wielu warunków; to ułatwia utrzymanie i dalszą rozbudowę projektu.