1. ro
  2. en
07 august 2025

Utilizarea afișajelor TFT

Tipuri de afișaje TFT compatibile cu Arduino Uno

 

În lumea microcontrolerelor, afișajele TFT (Thin-Film Transistor) joacă un rol esențial în crearea de interfețe vizuale interactive. Ele permit afișarea de text, forme, imagini și animații, transformând proiectele educaționale sau hobby în experiențe mult mai captivante. Pentru a le integra corect cu Arduino Uno, este important să înțelegem principalele tipuri de afișaje disponibile: seriale și paralele

 

Afișaje TFT seriale

 

Afișajele seriale comunică cu Arduino prin protocoale precum SPI (Serial Peripheral Interface) sau I2C, folosind un număr redus de pini. Sunt ideale pentru proiecte cu resurse limitate, cum este Arduino Uno, care are doar 32 KB de memorie flash și un număr restrâns de pini digitali.

 

Caracteristicile lor principale sunt următoarele:

  • Necesită doar 4–5 pini pentru comunicație

  • Posedă o viteză bună de transfer

  • Consum redus de resurse (vorbim aici de puterea electrică)

  • Sunt ușor de integrat în proiecte educaționale

 

Cele mai populare modele sunt:

  • ST7735 – 128×160 pixeli, comunicație SPI, compact și eficient

  • ST7789 – 240×240 pixeli, comunicație SPI, culori vibrante

  • ILI9341 – 240×320 pixeli, comunicație SPI, foarte popular în proiecte cu Arduino

  • SSD1306 – OLED (Organic Light Emitting Diode), monocrom, comunicație I2C sau SPI, ideal pentru text și simboluri

 

Avantajele utilizării acestui model de afișaje în proiectele noastre sunt multiple, printre ele regăsindu-se:

  • Compatibilitate excelentă cu Arduino Uno

  • Biblioteci bine documentate (Adafruit, TFT_eSPI, Ucglib)

  • Ideal pentru jocuri, meniuri, senzori, afișaje de stare

 

Afișaje TFT paralele

 

Afișajele paralele folosesc o interfață de tip 8-bit sau 16-bit, trimițând datele simultan pe mai multe linii. Acestea oferă o viteză de transfer mai mare, dar necesită un număr semnificativ de pini — ceea ce le face mai potrivite pentru dispozitive care ne oferă acces la un număr mai mare de pini de intrare/ieșire, precum Arduino Mega sau STM32.

 

Caracteristicile lor principale sunt următoarele:

  • Necesită 8–16 pini de date + pini de control

  • Viteză foarte mare de transfer

  • Rezoluții mai mari și performanță grafică superioară

  • Necesită controlere dedicate (de exemplu: RA8875, HX8357)

 

Cele mai populare modele sunt:

  • ILI9325 / ILI9486 – 320×240 pixeli, interfață paralelă 8-bit

  • HX8357D – 480×320 pixeli, paralel 8-bit sau SPI

  • RA8875 – controler extern pentru afișaje de mari dimensiune (800×480 pixeli)

 

În cazul în care ne propunem să utilizăm un astfel de afișaj împreună cu Arduino Uno, vom avea niște limitări:

  • Număr insuficient de pini pentru interfață completă (ne vor rămâne la dispoziție doar câțiva pini pentru alte elemente de circuit)

  • Consum mare de memorie și resurse

  • Necesită optimizări sau plăci mai puternice (cu putere mai bună de calcul)

 

În concluzie, pentru majoritatea proiectelor educaționale, afișajele TFT seriale sunt alegerea ideală. Ele oferă un echilibru excelent între performanță, simplitate și compatibilitate cu Arduino Uno. Afișajele paralele sunt recomandate doar în cazul în care se dorește o grafică avansată și se dispune de o placă de dezvoltare cu resurse extinse.

 

 

Cum alegem afișajul potrivit pentru proiectul nostru

 

Alegerea unui afișaj TFT potrivit nu se face doar pe baza dimensiunii sau a culorilor vibrante. Este o decizie tehnică și pedagogică, care trebuie să țină cont de resursele disponibile, complexitatea proiectului și experiența utilizatorului. Mai jos sunt criteriile esențiale care te vor ghida spre alegerea corectă.

 

1. Compatibilitatea cu placa de dezvoltare

Primul pas este să verificăm dacă afișajul poate fi controlat eficient de placa de dezvoltare pe care o folosim. Arduino Uno, de exemplu, are un număr limitat de pini și memorie, ceea ce îl face ideal pentru afișaje seriale (SPI sau I2C), dar nepotrivit pentru afișaje paralele, care necesită 8–16 pini de date.

 

Recomandat pentru Arduino Uno:

  • ST7735, ST7789, ILI9341 (versiuni SPI)

  • SSD1306 (OLED, versiuni cu I2C sau SPI)

Recomandat pentru Arduino Mega / ESP32:

  • ILI9486, HX8357, RA8875 (paralele sau SPI extins)

 

2. Rezoluția și dimensiunea fizică

Rezoluția influențează claritatea graficii, dar și consumul de memorie. Un afișaj de 240×320 pixeli (ILI9341) oferă spațiu generos pentru meniuri, jocuri și animații, dar poate solicita mai mult microcontrolerul. Pentru proiecte simple, un ecran de 128×160 (ST7735) este suficient.

 

Exemple:

  • 128×160 – ideal pentru scoruri, meniuri simple

  • 240×240 – echilibru între claritate și performanță

  • 240×320 – potrivit pentru interfețe complexe

  • 480×320 – necesită microcontrolere mai puternice, deci este exclus să îl utilizăm cu Arduino Uno sau Nano

 

3. Tipul de interfață: SPI vs I2C vs paralel

  • SPI – rapid, stabil, ideal pentru grafică color (ST7789, ILI9341)

  • I2C – mai lent, dar folosește doar 2 pini (SSD1306)

  • Paralel – foarte rapid, dar consumă mulți pini (nepotrivit pentru Uno)

 

Sugestie: Dacă proiectul implică animații, jocuri sau interfețe dinamice, alege un afișaj SPI. Dacă afișezi doar text sau simboluri, I2C poate fi suficient.

 

4. Suportul grafic și bibliotecile disponibile

Un afișaj este util sau, uneori utilizabil, doar dacă are biblioteci stabile și documentație clară. Cele mai populare biblioteci sunt:

  • Adafruit GFX – desen avansat, compatibil cu majoritatea TFT-urilor

  • Adafruit ILI9341 / ST7735 / ST7789 – control dedicat pentru fiecare model

  • TFT_eSPI – performant, ideal pentru ESP32

  • Ucglib – alternativă flexibilă pentru afișaje diverse

 

Înainte de a lua decizia, verifică: dacă biblioteca oferă funcții precum drawCircle(), setTextColor(), fillScreen(), print(), atunci e potrivită pentru interfețe educaționale.

 

5. Conectivitate și spațiu pe breadboard

Unele afișaje vin cu pini lipiți, altele cu conectori sau ecran tactil. Verifică dacă:

  • Se pot conecta ușor pe breadboard

  • Nu blochează accesul la alți pini

  • Au tensiune compatibilă (3.3V sau 5V)

 

Atenție: ST7789 și ILI9341 funcționează cu semnale logice de 3.3V. Dacă folosești Arduino Uno ( care generează semnale logice de 5V), ai nevoie de rezistențe de protecție sau convertor de nivel logic.

 

6.  Scopul proiectului

Afișajul trebuie să se potrivească cu obiectivul educațional sau funcțional:

  • Pentru jocuri interactive: ILI9341 sau ST7789

  • Pentru afișarea de date simple: SSD1306

  • Pentru meniuri și navigare: ST7735, ST7789

  • Pentru proiecte vizuale avansate: HX8357, RA8875 (cu ESP32)

 

Ca recomandare generală: pentru majoritatea proiectelor educaționale cu Arduino Uno, afișajele SPI de tip ST7789 sau ILI9341 oferă cel mai bun raport între performanță, simplitate și compatibilitate. Sunt ușor de conectat, bine documentate și permit o gamă largă de aplicații — de la jocuri matematice la interfețe grafice pentru senzori.

 

 

Afișajele ST7789 și ILI9341

 

Descrierea pinilor

 

Atât ST7789 cât și ILI9341 sunt afișaje TFT care comunică cu Arduino prin interfața SPI, ceea ce înseamnă că datele sunt transmise serial, utilizând câțiva pini esențiali. Deși cele două afișaje au funcții similare, configurația pinilor lor poate varia ușor în funcție de modulul fizic utilizat.

 

Începem cu pinul VCC, responsabil pentru alimentarea afișajului. Deși controlerele ST7789 și ILI9341 funcționează nativ la 3.3V, multe module comerciale includ un regulator de tensiune integrat, ceea ce le permite să fie alimentate direct la 5V. Este important să verificăm specificațiile modulului sau inscripțiile de pe PCB înainte de conectare. Pe unele plăci electronice, vei observa un jumper marcat J1, alături de o notă tipărită care indică: dacă J1 este în scurtcircuit (adică realizăm o punte între cele două puncte), atunci VCC va fi alimentat la 3.3V; dacă J1 este lăsat liber, placa se va alimenta la 5V. Această configurație oferă flexibilitate, dar și responsabilitate — conectarea greșită la 5V pe un modul fără protecție poate deteriora definitiv controlerul grafic. În practică, majoritatea modulelor ST7789 și ILI9341 disponibile pe piață sunt configurate implicit pentru alimentare la 5V, tocmai pentru a fi compatibile cu Arduino Uno. Totuși, este recomandat să verifici vizual prezența jumperului J1 și eventualele componente de reglare a tensiunii (cum ar fi AMS1117) înainte de conectare.

 

GND este pinul de masă și trebuie conectat direct la GND-ul Arduino pentru a asigura referința comună de tensiune.

 

SCK (Serial Clock) este pinul care transmite semnalul de sincronizare între Arduino și afișaj. Pe Arduino Uno, acesta corespunde pinului digital D13. Este responsabil pentru ritmul cu care datele sunt transmise.

 

SDI sau MOSI (Master Out Slave In) este pinul prin care Arduino trimite datele către afișaj. Pe Arduino Uno, acesta este pinul D11. Este utilizat pentru a transmite comenzi, culori, coordonate și orice altă informație grafică.

 

CS (Chip Select) este pinul care activează afișajul pentru comunicare. Atunci când este setat LOW, afișajul ascultă comenzile trimise. Pe unele module ST7789, acest pin lipsește, iar afișajul este activ permanent. În cazul ILI9341, CS este obligatoriu și poate fi conectat la orice pin digital liber, de exemplu, noi am utilizat D10 în proiectele noastre.

 

DC (Data/Command) este pinul care diferențiază între date grafice și comenzi de control. Când este LOW, datele trimise sunt interpretate ca instrucțiuni (ex: setează rotația); când este HIGH, sunt interpretate ca date (ex: desenează pixelul). Acest pin este esențial pentru funcționarea corectă a afișajului și se conectează la un pin digital liber, cum ar fi D8.

 

RST (Reset) este pinul care reinițializează afișajul la pornire. Nu toate modulele îl au expus, iar unele biblioteci permit omiterea lui. Dacă este disponibil, se recomandă conectarea la un pin digital, cum ar fi D9, pentru a asigura o pornire stabilă.

 

Un alt pin important, adesea trecut cu vederea, este cel marcat LED sau BLK — responsabil pentru iluminarea de fundal a afișajului TFT. Acest pin nu alimentează logica internă a afișajului, ci doar activează lumina de fundal, care face ca imaginea să fie vizibilă. În majoritatea modulelor, pinul LED/BLK trebuie conectat la 5V prin intermediul unei rezistențe de 220 ohmi, care limitează curentul și protejează circuitul de suprasarcină. Unele module au deja această rezistență montată pe PCB, dar dacă lipsește, este recomandat să o adaugi extern, între pinul LED și sursa de 5V. Dacă vei conecta pinul LED la un pin PWM de pe Arduino, poți regla intensitatea luminii de fundal în funcție de contextul aplicației (ex: mai slab în modul noapte, mai puternic în jocuri interactive).

 

 

Pinii T_ – funcții pentru ecran tactil

Pe unele module ILI9341 sau ST7789, vei observa un set de pini cu prefixul T_, care aparțin controlerului de ecran tactil rezistiv (de obicei XPT2046). Acești pini nu sunt conectați la controlerul grafic, ci la un cip separat care citește poziția atingerii pe ecran.

  • T_CLK – semnal de ceas pentru comunicația SPI cu controlerul tactil

  • T_CS – Chip Select pentru activarea controlerului tactil

  • T_DIN – date trimise către controlerul tactil (echivalent cu MOSI)

  • T_DO – date primite de la controlerul tactil (echivalent cu MISO)

  • T_IRQ – semnal de întrerupere, activat când ecranul este atins

 

Acești pini se conectează separat la Arduino, iar pentru citirea poziției de atingere se folosește o bibliotecă dedicată, precum TouchScreen.h sau XPT2046_Touchscreen. Ecranul tactil poate fi folosit pentru navigare în meniu, selectarea opțiunilor sau interacțiuni în jocuri.

 

Pinii SD_ – funcții pentru cititorul de card microSD

Unele module TFT includ și un slot microSD, util pentru stocarea de imagini, fonturi personalizate sau fișiere de configurare. Pinii marcați SD_ sunt conectați la un cititor de card care comunică tot prin SPI, dar pe un canal separat.

  • SD_CS – Chip Select pentru activarea cititorului SD

  • SD_MOSI – date trimise către cardul SD

  • SD_MISO – date primite de la cardul SD

  • SD_CLK – semnal de ceas pentru sincronizare

Pentru a folosi cardul microSD, se recomandă biblioteca SD.h sau SdFat.h, care permit citirea și scrierea de fișiere. Este important ca pinul SD_CS să fie diferit de cel folosit pentru afișaj, pentru a evita conflictele pe magistrala SPI.

 

Pinii T_ și SD_ extind funcționalitatea modulelor TFT, oferind suport pentru interacțiune tactilă și stocare externă. Deși nu sunt necesari pentru afișarea graficii de bază, ei pot transforma un proiect simplu într-o interfață completă, interactivă și scalabilă.

 

 

Biblioteci esențiale pentru afișajele TFT ST7789 și ILI9341

 

Pentru ca afișajele TFT să funcționeze corect cu Arduino Uno, este necesar să instalăm câteva biblioteci fundamentale. Acestea oferă suport pentru comunicarea SPI, desenarea graficii și controlul specific al fiecărui model de afișaj. Fără aceste biblioteci, nu putem trimite comenzi către ecran, nu putem afișa text sau forme, iar proiectul nu va putea fi compilat.

 

Începem cu biblioteca Adafruit GFX by Adafruit, care este responsabilă pentru toate operațiile grafice de nivel înalt. Ea oferă funcții precum drawCircle(), fillRect(), setTextColor() și print(), permițând desenarea de forme, afișarea de text și controlul culorilor. Este o bibliotecă universală, compatibilă cu majoritatea afișajelor Adafruit, inclusiv ST7735, ST7789, ILI9341, SSD1306 și altele.

 

Pentru controlul specific al afișajului, avem nevoie de o bibliotecă dedicată modelului utilizat. Dacă folosim un afișaj ILI9341, instalăm biblioteca Adafruit ILI9341 by Adafruit, care conține clasele și comenzile necesare pentru acest controler grafic. Dacă folosim ST7789, instalăm Adafruit ST7735 and ST7789 by Adafruit, care acoperă ambele modele, deoarece ST7735 și ST7789 împărtășesc aceeași interfață SPI și set de comenzi. Aceste biblioteci permit inițializarea ecranului, setarea rezoluției, rotirea afișajului și trimiterea de date grafice. Ele se bazează pe GFX pentru desen, dar adaugă funcționalități specifice fiecărui controler.

În plus, biblioteca Adafruit BusIO by Adafruit este o componentă de suport necesară pentru funcționarea corectă a GFX și a bibliotecilor de afișaj. Ea gestionează comunicațiile SPI și I2C într-un mod abstractizat, oferind stabilitate și compatibilitate extinsă cu diverse microcontrolere. Deși nu o folosim direct în cod, ea este esențială pentru ca celelalte biblioteci să funcționeze fără erori.

 

 

Pentru a instala aceste biblioteci, deschidem Arduino IDE și accesăm meniul Sketch → Include Library → Manage Libraries. Căutăm „Adafruit ST7735 and ST7789” sau „Adafruit ILI9341” și, foarte important, apăsăm pe Install all. Această opțiune va instala automat și Adafruit GFX și Adafruit BusIO, evitând erorile de compilare și asigurând funcționarea completă a afișajului.

 

În final, biblioteca SPI este inclusă implicit în Arduino IDE și nu necesită instalare separată. Ea permite comunicarea între Arduino și afișaj prin protocolul SPI, fiind esențială pentru trimiterea datelor grafice. Prin instalarea acestor biblioteci, ne asigurăm că afișajul funcționează corect, că elementele grafice sunt afișate fluent și că logica jocului sau a interfeței poate fi implementată fără întreruperi sau erori tehnice.

 

 

 

 

 

​​​​​​​

​​​​​​​