Jak uruchomić prawie każdy wyświetlacz TFT

Jak uruchomić prawie każdy wyświetlacz TFT
Wyświetlacze TFT to temat, na który prędzej czy później trafia każdy kto bawi się Arduino czy ESP32. No i wtedy zaczyna się klasyka: kupujesz, podłączasz… i widzisz tylko biały ekran 😅
Problem jest taki, że tych wyświetlaczy jest masa, różne sterowniki ILI9341, ST7735, ST7789…, różne rozdzielczości, różne piny i nagle wychodzi, że to wcale nie jest takie „plug and play”. Dlatego zamiast walczyć z każdą biblioteką osobno, zrobimy to sprytniej, użyjemy jednej biblioteki, która ogarnia większość tematów, czyli TFT_eSPI. Nie jest to najlżejsze ani najbardziej „czyste” rozwiązanie, ale na start jest po prostu genialne, bo pozwala bardzo szybko dojść do momentu: „o, działa”.
Co będzie potrzebne
Nie komplikujemy, na start wystarczy podstawowy zestaw:
| Element | Opis |
|---|---|
| Klasyczne ESP32 wroom | Główna płytka sterująca, na której uruchomimy wyświetlacz |
| Wyświetlacz TFT np. ILI9341 / ST7735 / ST7789 | Dowolny wyświetlacz SPI na początek nie ma to większego znaczenia |
| Przewody połączeniowe | Do podłączenia wszystkiego razem |
| Płytka stykowa | Do szybkiego prototypowania bez lutowania |
Skupiamy się tylko na SPI, bo to większość przypadków.
Podłączenie
Zanim coś podłączysz, warto ogarnąć jedną rzecz nazwy pinów na wyświetlaczach TFT potrafią się różnić, mimo że chodzi o dokładnie to samo.
Na jednym module masz „SCK”, na innym „CLK”, gdzie indziej „SCL” i człowiek się zastanawia czy to na pewno to samo 😅
Dlatego lecimy po kolei co oznacza co:
| Nazwa pinu | Co to oznacza |
|---|---|
| VCC / VDD | Zasilanie najczęściej 3,3 V |
| GND | Masa |
| SCK / CLK / SCL | Zegar SPI |
| MOSI / SDA / DIN | Dane do wyświetlacza |
| MISO | Dane z wyświetlacza często nieużywane |
| CS / SS | Wybór układu Chip Select |
| DC / A0 | Przełącza tryb dane/komenda bardzo ważny pin |
| RST / RESET | Reset wyświetlacza |
czy wszystkie piny są potrzebne?
Nie zawsze. Minimalnie potrzebujesz:
- MOSI
- SCK
- CS
- DC
- RST
Pin MISO w większości przypadków możesz spokojnie pominąć, bo wyświetlacz i tak nic nie odsyła.
Przykładowe podłączenie pod ESP32
| Pin wyświetlacza | Opis | ESP32 GPIO |
|---|---|---|
| VCC | Zasilanie | 3,3 V |
| GND | Masa | GND |
| SCK / CLK | Zegar SPI | 18 |
| MOSI / SDA | Dane do wyświetlacza | 23 |
| CS | Chip Select | 5 |
| DC | Data / Command | 2 |
| RST | Reset | 4 |
| BL / LED | Podświetlenie | 3,3 V |
Najważniejsza zasada
To jak to podłączysz fizycznie musi się zgadzać z tym co ustawisz w bibliotece.
Na co uważać
Najczęstszy błąd na tym etapie to:
- pomylenie MOSI z MISO
- brak podłączonego DC
- brak podświetlenia BL, ekran „działa”, ale nic nie widać
Instalacja biblioteki
Zaczynamy od podstaw, czyli instalacji biblioteki, bez której cały ten temat po prostu nie ruszy. W Arduino IDE przechodzisz standardowo do menedżera bibliotek i wyszukujesz:
TFT_eSPI autor: Bodmer
Instalujesz i… to by było na tyle, jeśli chodzi o łatwą część 🙂
Bo tutaj pojawia się jedna ważna rzecz, o której trzeba powiedzieć wprost to nie jest biblioteka typu „kliknij instaluj i od razu działa”. I bardzo dobrze, bo dzięki temu jest dużo bardziej uniwersalna.
TFT_eSPI obsługuje ogromną ilość różnych wyświetlaczy, ale żeby to było możliwe, musisz jej na początku powiedzieć jedną rzecz: z czym dokładnie pracujesz i jak to masz podłączone.
I właśnie tym zajmiemy się w kolejnym kroku, bo bez tego nawet najlepszy kod nic nie wyświetli 🙂

konfiguracja biblioteki plik User_Setup.h
No i teraz dochodzimy do najważniejszego momentu w całym tym procesie.
Sama instalacja biblioteki to jedno, ale żeby cokolwiek zadziałało, musisz ją jeszcze odpowiednio skonfigurować. I właśnie do tego służy plik:
User_Setup.h
To jest dokładnie miejsce, w którym mówisz bibliotece:
- jaki masz wyświetlacz czyli jaki sterownik
- jak go podłączyłeś czyli które piny gdzie idą
Bez tego biblioteka po prostu „nie wie” co ma robić.
Gdzie znaleźć ten plik
I tu pojawia się najczęstsze pytanie: „gdzie to w ogóle jest?”
Masz kilka opcji: Najprostsza metoda to wejść w Arduino IDE i kliknąć:
Plik → Przykłady → TFT_eSPI → dowolny przykład
Po otwarciu przykładu możesz kliknąć na zakładkę z nazwą User_Setup.h – często jest dostępna bezpośrednio z poziomu biblioteki.
Jeśli jej nie widzisz, to druga opcja to wejście bezpośrednio do folderu z biblioteką na dysku. Zazwyczaj będzie to coś w stylu:
Dokumenty/Arduino/libraries/TFT_eSPI/
I tam znajdziesz plik:
User_Setup.h

Kiedy już znajdziesz plik User_Setup.h, trzeba go jeszcze otworzyć i edytować.
Możesz to zrobić w dowolnym edytorze tekstowym, to jest zwykły plik .h, więc nie potrzebujesz do tego żadnych specjalnych narzędzi.
My w tym poradniku skorzystamy z Notepad++, bo jest lekki, wygodny i dobrze pokazuje składnię, ale równie dobrze możesz użyć:
- zwykłego Notatnika
- VS Code
- Arduino IDE
To nie ma większego znaczenia, ważne jest tylko, żebyś mógł swobodnie edytować plik i zapisać zmiany.

Wybór sterownika
czyli najważniejsza linijka w całym pliku
Po otwarciu pliku User_Setup.h zobaczysz sporo zakomentowanych linii na pierwszy rzut oka może to wyglądać trochę chaotycznie, ale spokojnie, interesuje nas tutaj tylko jeden fragment.
To jest właśnie lista dostępnych sterowników wyświetlaczy, które obsługuje biblioteka TFT_eSPI.
Na screenie widzisz coś takiego 👉
I tutaj obowiązuje bardzo prosta zasada: odkomentowujesz tylko jeden sterownik ten, który masz u siebie. Reszta musi zostać zakomentowana. Na potrzeby tego poradnika weźmy sobie przykład bardzo popularnego sterownika, czyli ILI9341. Żeby ją aktywować, wystarczy usunąć // na początku I to wszystko, od tego momentu biblioteka „wie”, z jakim wyświetlaczem pracuje.
Jeżeli masz inny sterownik np. ST7735 albo ST7789, robisz dokładnie to samo, tylko wybierasz odpowiednią linijkę zamiast ILI9341.

W kolejnym kroku możesz natknąć się na ustawienie związane z kolejnością kolorów, czyli parametr TFT_RGB_ORDER. Na screenie widać dwie opcje: TFT_RGB oraz TFT_BGR, które odpowiadają za sposób interpretacji kolorów przez wyświetlacz. W praktyce oznacza to tyle, że jeżeli po uruchomieniu zobaczysz „dziwne” kolory, na przykład zamiast czerwonego pojawia się niebieski, to właśnie tutaj należy dokonać zmiany. W większości przypadków jedna z tych opcji będzie zakomentowana i na start nie trzeba tego ruszać, ale warto wiedzieć, że to jest pierwsze miejsce, do którego wracasz, gdy kolory nie zgadzają się z rzeczywistością.

W tej części znajdziesz również opcję związaną z odwróceniem kolorów, czyli TFT_INVERSION_ON oraz TFT_INVERSION_OFF. Na pierwszy rzut oka wygląda to niepozornie, ale w praktyce potrafi uratować sporo czasu.
Zdarza się, że po poprawnym podłączeniu i konfiguracji wyświetlacza wszystko działa, ale kolory są „odwrócone”, czyli np. biały wygląda jak czarny, a czarny jak biały. W takim przypadku wystarczy odkomentować jedną z tych linii i sprawdzić efekt.
Najczęściej działa to na zasadzie prób i błędów, czyli odkomentowujesz TFT_INVERSION_ON, sprawdzasz jak wygląda obraz, a jeśli nadal coś jest nie tak, testujesz drugą opcję.
Jeżeli kolory od początku wyglądają poprawnie, to po prostu zostawiasz te linie zakomentowane i nie musisz nic zmieniać.

W tej sekcji możemy ustawić sterowanie podświetleniem wyświetlacza za pomocą pinu TFT_BL. Jeżeli Twój moduł ma wyprowadzony pin BL/LED, możesz go podłączyć do GPIO i tutaj wpisać jego numer, a biblioteka automatycznie włączy podświetlenie. Parametr TFT_BACKLIGHT_ON określa, czy podświetlenie włącza się stanem HIGH czy LOW, co zależy od konkretnego modułu.

W kolejnym fragmencie pliku trafimy na sekcję konfiguracji pinów, ale jak widać na screenie, dotyczy ona konkretnie ESP8266 (NodeMCU). Ponieważ w naszym projekcie używamy ESP32, te ustawienia nie będą nam potrzebne.
Dlatego wszystkie te linijki po prostu zakomentowujemy, dodając // na początku każdej z nich. Dzięki temu biblioteka je zignoruje i nie będzie próbowała korzystać z konfiguracji przeznaczonej dla innej platformy.
To jest ważny krok, bo zostawienie tych ustawień może powodować konflikty albo po prostu brak działania wyświetlacza. Po ich wyłączeniu przechodzimy dalej do sekcji dedykowanej już pod ESP32, gdzie ustawimy właściwe piny zgodne z naszym podłączeniem.

W kolejnym kroku przechodzimy do sekcji dedykowanej już dla ESP32 i to właśnie tutaj ustawiamy nasze właściwe piny. Na screenie widać przykładową konfigurację dla tej platformy, jednak wszystkie linijki są na początku zakomentowane.
W tym miejscu musisz zrobić dokładnie odwrotnie niż wcześniej, czyli odkomentować tylko te linie, które odpowiadają Twojemu podłączeniu. Usuwasz // i wpisujesz takie numery pinów, jakie faktycznie użyłeś w swoim układzie. To bardzo ważne, bo biblioteka korzysta dokładnie z tych definicji podczas działania programu.
Dla przykładu, jeżeli masz podłączone SPI tak jak w naszym wcześniejszym schemacie, to ustawiasz odpowiednio piny dla TFT_MOSI, TFT_SCLK, TFT_CS, TFT_DC oraz TFT_RST. Warto też pamiętać, że pin TFT_MISO w większości przypadków może pozostać zakomentowany, ponieważ wyświetlacze TFT zazwyczaj nie odsyłają danych.
To jest moment, w którym fizyczne podłączenie musi się w 100% zgadzać z tym, co wpiszesz w pliku, bo nawet jedna niezgodność spowoduje, że wyświetlacz po prostu nie zadziała.

W tym fragmencie konfiguracji trafiamy na ustawienie częstotliwości magistrali SPI, czyli parametru SPI_FREQUENCY. To właśnie on odpowiada za to, jak szybko dane są wysyłane do wyświetlacza, a co za tym idzie, jak szybko rysuje się grafika.
Na screenie widać kilka przykładowych wartości, z których tylko jedna jest aktywna, a reszta zakomentowana. W naszym przypadku ustawione jest 27000000, czyli 27 MHz i jest to bezpieczna wartość, która działa stabilnie z większością wyświetlaczy.
Warto tutaj wiedzieć jedną rzecz im wyższa częstotliwość, tym szybciej działa ekran, ale tylko do pewnego momentu. Jeżeli ustawisz ją zbyt wysoko, mogą zacząć pojawiać się różne problemy, takie jak artefakty, losowe piksele albo całkowicie nieczytelny obraz. Dlatego często lepiej zacząć od niższej wartości, a dopiero potem ewentualnie ją zwiększać.
Dla przykładu, dla popularnego ILI9341 często działa nawet 40 MHz, ale nie każdy moduł to ogarnie. Z kolei dla mniejszych wyświetlaczy, jak ST7735, maksymalna stabilna częstotliwość może być sporo niższa.
Podsumowując, jeżeli wszystko działa poprawnie nie ruszaj tego parametru. A jeśli masz problemy z obrazem, to jest jedno z pierwszych miejsc, do których warto wrócić i trochę poeksperymentować.

Na końcu tej sekcji możesz jeszcze zauważyć linię związaną z dotykiem, czyli SPI_TOUCH_FREQUENCY. Dotyczy ona wyświetlaczy wyposażonych w panel dotykowy (najczęściej z kontrolerem XPT2046) i określa częstotliwość komunikacji SPI właśnie dla tego modułu.
W naszym przypadku, jeżeli korzystasz ze zwykłego wyświetlacza bez dotyku, ta linijka nie ma większego znaczenia i możesz ją zostawić tak, jak jest. Natomiast jeżeli masz wersję z panelem dotykowym, to warto wiedzieć, że tutaj obowiązuje niższa częstotliwość, zazwyczaj około 2.5 MHz – ponieważ kontroler dotyku nie jest w stanie pracować tak szybko jak sam wyświetlacz.

Pierwszy test – czy to działa?
Jeżeli wszystko zostało poprawnie skonfigurowane, to teraz jest moment prawdy 🙂
Najprostszy sposób na sprawdzenie, czy wyświetlacz działa, to uruchomienie jednego z przykładów dostępnych w bibliotece TFT_eSPI. W Arduino IDE przechodzimy do:
Plik → Przykłady → TFT_eSPI → Test and diagnostics → Colour_Test
Wgrywamy program na ESP32 i obserwujemy ekran.
Jeżeli wszystko jest dobrze ustawione, powinieneś zobaczyć różne kolory. To oznacza, że:
- sterownik został dobrze ustawiony
- piny są poprawnie przypisane
- komunikacja SPI działa jak należy
Jeżeli ekran dalej jest biały albo czarny, to wracamy do poprzednich kroków i sprawdzamy:
- czy na pewno wybrałeś dobry sterownik
- czy piny zgadzają się z podłączeniem
- czy podświetlenie jest włączone
- czy częstotliwość SPI nie jest za wysoka
Najczęstsze problemy
Na tym etapie większość problemów sprowadza się do kilku rzeczy:
- zły sterownik
- źle ustawione piny w
User_Setup.h - brak podświetlenia ekran „działa”, ale nic nie widać
- złe kolory do poprawienia przez
TFT_RGB_ORDER - odwrócone kolory do poprawienia przez
TFT_INVERSION_ON/OFF
Dobra wiadomość jest taka, że w 90% przypadków problem jest właśnie w jednym z tych punktów.
Podsumowanie
Jak widzisz, uruchomienie wyświetlacza TFT wcale nie jest takie trudne, tylko na początku trzeba przejść przez jeden ważny etap, czyli konfigurację biblioteki.
Największa „magia” dzieje się w pliku User_Setup.h, gdzie ustawiasz:
- sterownik wyświetlacza
- piny
- ewentualnie kolory i częstotliwość SPI
Reszta to już tylko kwestia wgrania przykładu i sprawdzenia efektu.
Biblioteka TFT_eSPI może na początku wydawać się trochę toporna, ale jak już raz ją ogarniesz, to później uruchomienie kolejnych wyświetlaczy to dosłownie kilka minut roboty.

Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉sklep.msalamon.pl 👈 Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇



ESP32 płytka z ESP-WROOM-32 38-pin z układem CP2102