Com utilitzar la pantalla ILI9341 amb Arduino: tutorial complet i detallat

  • La pantalla TFT ILI9341 es comunica a través de la interfície SPI i requereix connexions precises.
  • És essencial utilitzar adaptadors de nivell lògic si es fa servir un Arduino de 5V per evitar danyar la pantalla.
  • Les llibreries Adafruit_GFX i Adafruit_ILI9341 són fonamentals per programar gràfics a la pantalla.
  • Es poden realitzar projectes pràctics com ara la visualització de dades o la detecció tàctil amb la pantalla ILI9341.

TFT amb ST7789VI control MCU arduí-7

Avui dia, les pantalles TFT amb el controlador ILI9341 són una de les opcions més populars per a projectes de prototipat amb Arduino per la seva versatilitat i les seves capacitats gràfiques. Si has estat buscant com aprofitar aquestes pantalles als teus projectes, vas arribar al lloc indicat. Aquí t'expliquem tot el que necessites saber per connectar, configurar i fer servir la pantalla TFT ILI9341, ia més veurem alguns exemples de codi molt útils.

Treballar amb aquesta pantalla pot semblar complicat al principi a causa de la quantitat de pins i connexions necessàries, però un cop entens el procés, es torna molt més senzill. En aquest article veurem pas a pas com realitzar la connexió, provar-la i programar-la.

Materials necessaris per utilitzar la pantalla ILI9341 amb Arduino

  • Arduino UNO o Arduino Pro Mini de 3.3V: Si utilitzes un Arduino UNO, necessitaràs adaptadors de nivell lògic per no fer malbé la pantalla, ja que aquesta treballa amb 3.3V. Si utilitzes un Arduino Pro Mini de 3.3V, pots connectar directament.
  • Pantalla TFT ILI9341: Pantalla de 2.4 o 2.8 polzades amb resolució de 240×320 píxels.
  • Conversor de nivell lògic (Si fas servir Arduino UNO): per adaptar els nivells de 5V a 3.3V.
  • protoboard y cables de connexió.

Pas 1: Connectar la pantalla ILI9341 a l'Arduino

La pantalla TFT ILI9341 utilitza la interfície SPI per comunicar-se amb Arduino, així que serà important fer les connexions correctes entre els pins SPI de l'Arduino i la pantalla. La taula següent explica detalladament com fer les connexions bàsiques:

Pin de la pantalla Pin de l'Arduí
SDO (MIS) Pin 12
SCK Pin 13
SDI (MOSI) Pin 11
D / C Pin 9
CS Pin 10
GND Pin GND
VCC Pin 3.3V
LED Pin 3.3V

Recorda que si utilitzes un Arduino UNO, caldrà fer servir els adaptadors de nivell lògic per convertir els 5V dels pins de l'Arduino a 3.3V. Si utilitzeu un Arduino Pro Mini de 3.3V, aquesta precaució no és necessària.

Pas 2: Instal·lar les llibreries necessàries

Per interactuar amb la pantalla ILI9341, necessitem instal·lar algunes llibreries a l'IDE d'Arduino. Hem d'assegurar-nos de tenir les llibreries següents:

  • Adafruit_ILI9341: Aquesta és la llibreria principal per manejar pantalles ILI9341 amb Arduino.
  • Adafruit_GFX: Aquesta llibreria facilita la creació de gràfics bàsics com a línies, cercles, rectangles, etc.

Per instal·lar aquestes llibreries, obre l'IDE d'Arduino i vés a Programa > Incloure llibreria > Gestionar biblioteques i busca ILI9341 per instal·lar la llibreria corresponent. Així mateix, cerca la llibreria Adafruit GFX i assegura't d'instal·lar l'adequada.

Pas 3: Provar la pantalla TFT amb un exemple bàsic

Arduino IDE, tipus de dades, programació

Un cop instal·lades les llibreries, és moment de provar la pantalla per assegurar-nos que tot està correctament connectat i funcionant. L´IDE d´Arduino inclou un exemple molt complet que ens serà de gran ajuda. Anem a carregar el graphictest:

  • Obre l'IDE d'Arduino.
  • Vés a Fitxer > Exemples > Adafruit_ILI9341 > graphictest.
  • Compila i apuja l'exemple al teu Arduino.

Si tot ha anat bé, hauries de veure una sèrie de gràfics mostrant a la pantalla diferents tipus de línies, formes i colors.

Pas 4: Crear un projecte pràctic: Mostrar valors analògics a la pantalla ILI9341

Un dels primers projectes que podem fer amb aquesta pantalla és visualitzar el valor duna entrada analògica, com el voltatge dun potenciòmetre. Per això utilitzarem els pins de la pantalla que ja hem connectat, a més d'un potenciòmetre connectat a l'entrada analògica A0 de l'Arduino.

El codi següent mostra com podem llegir el valor analògic del potenciòmetre i mostrar-lo a la pantalla:

#include 
#include 
#include 

#define TFT_DC 9
#define TFT_CS 10

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

void setup() {
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(ILI9341_BLACK);
  tft.setTextColor(ILI9341_WHITE);
  tft.setTextSize(2);
}

void loop() {
  int val = analogRead(A0);
  float voltage = val * (5.0 / 1023.0);
  tft.setCursor(60, 30);
  tft.print("Voltaje: ");
  tft.print(voltage);
  delay(500);
}

Aquest programa llegeix contínuament el voltatge i el mostra a la pantalla en format text. Si gires la perilla del potenciòmetre hauries de veure el canvi reflectit a la pantalla gairebé immediatament.

Afegint un botó a la pantalla tàctil ILI9341

A més de mostrar informació, la pantalla ILI9341 també té capacitat tàctil si compteu amb el controlador XPT2046. Crearem un exemple senzill que mostri com detectar tocs a la pantalla.

Primer, cal fer les connexions del controlador tàctil de la pantalla. Els pins principals per al controlador tàctil són:

  • TOUCH_CS: Pin 10.
  • TOUCH_IRQ: Pin 2.

Després de fer aquestes connexions, utilitzarem la llibreria XPT2046_Touchscreen per detectar els tocs. A continuació et deixo un codi que mostra un botó a la pantalla, que canvia de color cada vegada que és pressionat.

#include 
#include 
#include 
#include 

#define TFT_DC 9
#define TFT_CS 10
#define TOUCH_CS 10
#define TOUCH_IRQ 2

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
XPT2046_Touchscreen ts(TOUCH_CS, TOUCH_IRQ);

void setup() {
  tft.begin();
  ts.begin();
  tft.setRotation(1);
  tft.fillScreen(ILI9341_BLACK);
  tft.fillRect(50, 160, 100, 50, ILI9341_RED);
  tft.setCursor(75, 175);
  tft.setTextColor(ILI9341_WHITE);
  tft.setTextSize(2);
  tft.println("BOTON");
}

void loop() {
  if (ts.touched()) {
    TS_Point p = ts.getPoint();
    if (p.x >= 50 && p.x <= 150 && p.y >= 160 && p.y <= 210) {
      tft.fillRect(50, 160, 100, 50, ILI9341_GREEN);
      tft.setCursor(75, 175);
      tft.println("PULSADO");
    }
  }
}

El codi detecta si el botó ha estat premut i canvia el color de vermell a verd. També podeu personalitzar la posició i la mida del botó segons les vostres necessitats.

És fonamental assegurar-se que la pantalla està correctament calibrat perquè els tocs corresponguin adequadament a les coordenades de la pantalla. Si notes que la resposta tàctil no és necessària, potser cal fer un calibratge relacionat amb la resolució de la pantalla.