Arduino LCD 16x2 - podłączenie, kod i diagnostyka

Miłosz Szymczak .

14 października 2026

Połączenie Arduino Uno z płytką prototypową i wyświetlaczem LCD. Żółte przewody łączą piny cyfrowe Arduino z płytką, gdzie znajduje się rezystor i potencjometr. Czerwony przewód biegnie od Arduino do płytki. Wyświetlacz LCD jest podłączony do płytki.

Gdy Arduino ma nie tylko mierzyć, ale też pokazywać wynik bez podłączonego komputera, niewielki wyświetlacz LCD nadal jest jednym z najpraktyczniejszych dodatków. Zestaw z ekranem 16x2 pozwala wyświetlać temperaturę, komunikaty, stan przekaźnika czy wartości z czujników, a jego uruchomienie nie wymaga skomplikowanej elektroniki. Pokażę, jaki moduł wybrać, jak go podłączyć, napisać pierwszy program i usunąć typowe problemy z pustym ekranem.

Najważniejsze decyzje przed uruchomieniem wyświetlacza

  • LCD 16x2 pokazuje 16 znaków w dwóch wierszach i jest najprostszym wyborem do projektów Arduino.
  • Moduł I2C wymaga tylko czterech przewodów, podczas gdy wersja równoległa zajmuje więcej pinów.
  • W klasycznym połączeniu potrzebny jest zwykle potencjometr 10 kΩ do regulacji kontrastu.
  • Adres I2C, najczęściej 0x27 lub 0x3F, nie jest gwarantowany i może wymagać sprawdzenia.
  • Brak tekstu często wynika z kontrastu, masy albo złej kolejności pinów, a nie z uszkodzonego programu.

Co naprawdę daje LCD podłączony do Arduino

Najpopularniejszy moduł 1602, nazywany też 16x2, ma 16 kolumn i 2 wiersze. Wyświetla tekst oraz cyfry, ale nie jest ekranem graficznym. Do prostych stacji pogodowych, liczników, termometrów i menu sterujących to zwykle wystarcza, a ograniczenie graficzne pomaga utrzymać projekt w ryzach.

Większość takich wyświetlaczy korzysta z kontrolera HD44780 lub jego zgodnego odpowiednika. Dzięki temu można sterować nimi biblioteką LiquidCrystal, bez pisania obsługi niskopoziomowej. Sam najczęściej wybieram właśnie 1602, gdy liczy się czytelny komunikat i szybkie uruchomienie, a nie wygląd przypominający panel nowoczesnego urządzenia.

Do wyboru są dwa podstawowe warianty połączenia. Pierwszy wykorzystuje bezpośrednio piny danych LCD, drugi ma z tyłu małą płytkę z układem I2C, która zamienia komunikację równoległą na szeregową.

LCD równoległy czy moduł I2C

Cecha Połączenie równoległe Moduł I2C
Liczba przewodów sygnałowych 6 2
Potencjometr kontrastu Zewnętrzny, zwykle 10 kΩ Zwykle zamontowany na płytce
Biblioteka LiquidCrystal Jedna z bibliotek LiquidCrystal_I2C
Największa zaleta Przejrzyste poznanie działania LCD Oszczędność pinów Arduino
Najczęstsza trudność Dużo połączeń i możliwość pomyłki Nieznany adres I2C lub różnice między bibliotekami

Wersja równoległa ma sens edukacyjny. Widać, które linie odpowiadają za wybór rejestru, zatwierdzanie danych i przesyłanie znaków. Do gotowego projektu częściej polecam jednak I2C, bo dwa przewody sygnałowe zostawiają więcej pinów na czujniki, przyciski i sterowanie.

Trzeba tylko pamiętać, że LiquidCrystal_I2C nie jest jedną, całkowicie ujednoliconą biblioteką. Różne jej wersje mogą wymagać lcd.init(), lcd.begin() albo innej składni. Jeśli program zgłasza błąd przy inicjalizacji, najlepiej otworzyć przykład dołączony do konkretnej biblioteki zamiast kopiować losowy kod z internetu.

W Arduino Uno i klasycznym Nano linie I2C są dostępne na A4 jako SDA oraz A5 jako SCL. W Arduino Mega używa się zwykle pinów 20 i 21. W nowszych płytkach warto sprawdzić opis pinów, ponieważ mogą być dodatkowo wyprowadzone na złączu oznaczonym SDA i SCL.

Jak podłączyć klasyczny LCD 16x2

Przyjmijmy popularny układ z biblioteką LiquidCrystal i sześcioma pinami Arduino. Numery można zmienić w programie, ale na początek dobrze trzymać się jednego, czytelnego schematu.

Pin LCD Oznaczenie Połączenie
1 VSS GND
2 VDD 5 V
3 VO Środkowa nóżka potencjometru 10 kΩ
4 RS Arduino D12
5 RW GND
6 E Arduino D11
11 D4 Arduino D5
12 D5 Arduino D4
13 D6 Arduino D3
14 D7 Arduino D2
15 i 16 A i K Podświetlenie, zgodnie z dokumentacją modułu

Dwie nóżki potencjometru podłącz do 5 V i GND, a jego środkowy pin do VO. Pin RW najlepiej od razu połączyć z masą, ponieważ w typowym projekcie Arduino tylko zapisuje dane do wyświetlacza. Podświetlenie także wymaga uwagi, bo niektóre moduły mają już rezystor, a inne wymagają jego dodania.

Przy pracy z wersją I2C podłączasz tylko VCC, GND, SDA i SCL. Na płytce z tyłu LCD znajduje się zwykle mały potencjometr do kontrastu oraz zwora podświetlenia. To właśnie ten element często rozwiązuje problem, gdy ekran jest zasilany, ale tekst pozostaje niewidoczny.

Pierwszy program i czytelne odświeżanie danych

Dla połączenia równoległego wystarczy krótki szkic. Wywołanie lcd.begin(16, 2) informuje bibliotekę, że używasz ekranu o 16 kolumnach i 2 wierszach, a setCursor() ustawia miejsce rozpoczęcia tekstu.

#include 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Temperatura:");
  lcd.setCursor(0, 1);
  lcd.print("23.6 C");
}

void loop() {
}

W konstruktorze kolejność pinów to RS, E, D4, D5, D6, D7. Pomylenie choćby dwóch przewodów może sprawić, że podświetlenie będzie działało, ale znaki się nie pojawią. Dlatego przed zmianą programu sprawdzam najpierw tabelę połączeń i ciągłość przewodów.

Dla modułu I2C kod może wyglądać tak:

#include 
#include 

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Temperatura:");
  lcd.setCursor(0, 1);
  lcd.print("23.6 C");
}

void loop() {
}

Adres 0x27 jest popularny, ale nie uniwersalny. Jeżeli ekran nie reaguje, spróbuj sprawdzić także 0x3F albo uruchom skaner I2C. Gdy skaner nie wykrywa żadnego urządzenia, problem leży zwykle w zasilaniu, masie, zamienionych liniach SDA i SCL lub niezgodnym poziomie napięcia.

Jak wyświetlać zmienne bez migotania

W projektach z czujnikiem kuszące jest używanie lcd.clear() w każdej iteracji pętli. Efekt bywa jednak irytujący, bo ekran miga. Lepszym rozwiązaniem jest ustawienie kursora i nadpisanie poprzedniej wartości odpowiednią liczbą znaków.

int temperatura = 24;

void loop() {
  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.print(temperatura);
  lcd.print(" C   ");
  delay(500);
}

Spacje na końcu linii celowo przykrywają starsze, dłuższe wartości. Jeśli wcześniej wyświetliłeś 100, a później pojawi się 99, bez dodatkowej spacji ostatnia cyfra może pozostać na ekranie.

Najczęstsze błędy i szybka diagnoza

Podświetlenie działa, ale tekstu nie widać

Najpierw powoli przekręć potencjometr kontrastu. Przy złym ustawieniu ekran może wyglądać jak martwy, mimo że program działa. W module bez I2C sprawdź napięcie na VO i upewnij się, że suwak potencjometru jest podłączony do właściwej nóżki.

Pojawiają się prostokąty zamiast liter

Rząd ciemnych prostokątów zwykle oznacza, że LCD ma zasilanie i kontrast, ale nie został poprawnie zainicjalizowany. Sprawdź pin RW podłączony do GND, przewody RS i E oraz zgodność kolejności pinów w konstruktorze biblioteki.

Ekran I2C milczy

W tym przypadku zacznij od adresu. Moduł może używać 0x27, 0x3F albo innej wartości ustawionej przez zworki na ekspanderze. Potem sprawdź, czy SDA i SCL nie zostały zamienione oraz czy masa Arduino łączy się z masą wyświetlacza.

Przeczytaj również: Programowanie AVR - Od kodu do działającego układu bez zgadywania

Tekst wygląda na uszkodzony

Kontroler HD44780 ma ograniczony zestaw znaków i nie zawsze poprawnie wyświetla polskie litery. Do komunikatów technicznych używam prostych znaków ASCII, na przykład „Temp” zamiast „Temperatura” z diakrytyką, albo tworzę własne znaki w pamięci CGRAM. Zwykle można zapisać maksymalnie 8 własnych znaków jednocześnie.

Jak dobrać wyświetlacz do konkretnego projektu

Do pierwszych ćwiczeń wybrałbym LCD 1602 z I2C. Daje natychmiastowy, czytelny rezultat i nie blokuje wielu pinów, a jednocześnie uczy podstaw komunikacji z urządzeniem peryferyjnym. Wersję równoległą warto mieć wtedy, gdy chcesz zrozumieć działanie interfejsu albo korzystasz z zestawu edukacyjnego, który zawiera już potencjometr i przewody.

Jeżeli potrzebujesz więcej informacji na jednej stronie, wybierz LCD 2004, czyli 20 kolumn i 4 wiersze. Nie poprawia on jakości grafiki, ale pozwala pokazać kilka parametrów naraz, na przykład temperaturę, wilgotność, ciśnienie i stan przekaźnika.

Gdy projekt ma prezentować wykresy, ikony lub rozbudowane menu, znakowy LCD szybko pokaże swoje ograniczenia. Wtedy lepszy będzie ekran graficzny albo TFT, lecz za cenę większej liczby bibliotek, bardziej złożonego kodu i większego zużycia pamięci. Do prostego panelu sterowania klasyczny moduł nadal wygrywa prostotą.

Zastosowanie Najrozsądniejszy wybór Dlaczego
Termometr i prosty licznik LCD 1602 I2C Mało przewodów i szybki start
Kilka parametrów naraz LCD 2004 I2C Więcej miejsca na tekst
Nauka elektroniki LCD równoległy Łatwiej zrozumieć sygnały sterujące
Ikony i wykresy LCD graficzny lub TFT Większe możliwości wizualne

Od prostego komunikatu do użytecznego interfejsu

Najlepszy pierwszy projekt to nie samo wyświetlenie napisu „Hello”. Podłącz potencjometr, czujnik temperatury albo przycisk i pokaż na ekranie wartość, która faktycznie zmienia się podczas pracy. Dzięki temu od razu przećwiczysz odczyt danych, formatowanie tekstu i odświeżanie bez migotania.

Moja praktyczna kolejność jest prosta. Najpierw uruchamiam sam ekran, później sprawdzam kontrast, następnie dodaję jeden sensor i dopiero na końcu buduję menu. Takie etapowanie szybko pokazuje, czy problem tkwi w kablach, bibliotece, adresie I2C czy w logice programu.

Jeżeli połączenie zadziała, nie musisz już traktować LCD jako osobnego ćwiczenia. Ten sam schemat można rozwinąć w termostat, panel alarmowy, licznik impulsów albo lokalny interfejs robota. Najwięcej różnicy robią tu nie dodatkowe biblioteki, lecz poprawne zasilanie, właściwy kontrast i spokojne sprawdzanie każdego połączenia.

FAQ - Najczęstsze pytania

Moduł wymaga czterech przewodów: VCC, GND, SDA i SCL. W Arduino Uno SDA znajduje się na A4, a SCL na A5. Jeśli ekran nie reaguje, sprawdź adres I2C, najczęściej 0x27 lub 0x3F, oraz poprawność masy i zasilania.
Połączenie równoległe wykorzystuje sześć przewodów sygnałowych i bibliotekę LiquidCrystal, ale pozwala lepiej poznać działanie interfejsu. Moduł I2C używa tylko dwóch przewodów sygnałowych, zwykle ma potencjometr kontrastu na płytce i oszczędza piny Arduino.
Najpierw wyreguluj potencjometr kontrastu i sprawdź połączenie z masą. W wersji równoległej upewnij się, że RW jest podłączony do GND, a kolejność RS, E, D4, D5, D6 i D7 zgadza się z konstruktorem biblioteki. W wersji I2C sprawdź także adres oraz przewody SDA i SCL.
Nie używaj lcd.clear() w każdej iteracji pętli. Ustaw kursor w odpowiednim miejscu i nadpisuj poprzednią wartość, dodając na końcu spacje, aby zakryć wcześniejszy, dłuższy tekst, na przykład 100 zastąpione przez 99.
Oceń artykuł

Średnia: 5.0 / 5 · 1 ocena

Tagi

arduino lcd i2c hd44780
Autor Miłosz Szymczak
Miłosz Szymczak
Nazywam się Miłosz Szymczak i mam 14-letnie doświadczenie w dziedzinie elektroniki, robotyki i programowania. Moja przygoda z tymi tematami zaczęła się w młodym wieku, gdy zafascynowałem się możliwościami, jakie niesie ze sobą technologia. Od tego czasu nieustannie poszukuję nowych wyzwań i sposobów na wykorzystanie mojej wiedzy w praktyce. Lubię dzielić się z innymi tym, co sam odkryłem, a moim celem jest uproszczenie skomplikowanych zagadnień, aby były one zrozumiałe dla każdego. Piszę o różnych aspektach elektroniki i robotyki, starając się dostarczać rzetelne i aktualne informacje. Zawsze dokładam starań, aby moje teksty były dobrze zbadane, a przedstawiane w nich informacje były jasne i przystępne. Obserwuję najnowsze trendy w branży i staram się organizować wiedzę w sposób, który ułatwia czytelnikom zrozumienie omawianych tematów. Wierzę, że dzięki moim artykułom mogę pomóc innym w lepszym zrozumieniu otaczającego nas świata technologii.
Komentarze (0)
Dodaj komentarz