Šiandien TFT ekranai su ILI9341 valdikliu yra vienas iš populiariausių Arduino prototipų kūrimo projektų variantų dėl savo universalumo ir grafinių galimybių. Jei ieškojote, kaip panaudoti šiuos ekranus savo projektuose, atėjote ten, kur reikia. Čia paaiškinsime viską, ką reikia žinoti norint prisijungti, konfigūruoti ir naudoti ILI9341 TFT ekraną, taip pat pamatysime keletą labai naudingų kodų pavyzdžių.
Darbas su šiuo ekranu iš pradžių gali atrodyti sudėtingas dėl reikalingų kaiščių ir jungčių skaičiaus, tačiau supratus procesą, jis tampa daug paprastesnis. Šiame straipsnyje žingsnis po žingsnio apžvelgsime, kaip užmegzti ryšį, išbandyti ir užprogramuoti.
Medžiagos, reikalingos norint naudoti ILI9341 ekraną su Arduino
- Arduino UNO arba 3.3 V Arduino Pro Mini: Jei naudojate a Arduino UNO, jums reikės loginio lygio adapterių, kad nepažeistumėte ekrano, nes jis veikia su 3.3 V. Jei naudojate 3.3 V Arduino Pro Mini, galite prisijungti tiesiogiai.
- TFT ekranas ILI9341: 2.4 arba 2.8 colio ekranas su 240x320 pikselių raiška.
- Loginio lygio keitiklis (jei naudojate Arduino UNO): pritaikyti lygius nuo 5 V iki 3.3 V.
- Bandomoji Lenta y kabeliai ryšio.
1 veiksmas: prijunkite ILI9341 ekraną prie Arduino
ILI9341 TFT ekranas naudoja SPI sąsają, kad galėtų bendrauti su „Arduino“, todėl bus svarbu tinkamai sujungti „Arduino“ ir ekrano SPI kaiščius. Šioje lentelėje išsamiai paaiškinta, kaip atlikti pagrindinius ryšius:
ekrano kaištis | Arduino Pin |
---|---|
SDO (MISO) | Smeigtukas 12 |
SCK | Smeigtukas 13 |
SDI (MOSI) | Smeigtukas 11 |
D / C | Smeigtukas 9 |
CS | Smeigtukas 10 |
GND | Prisegti GND |
VCC | Kaištis 3.3V |
LED | Kaištis 3.3V |
Atminkite, kad jei naudojate a Arduino UNO, reikės naudoti loginio lygio adapteriai konvertuoti 5 V Arduino kaiščių į 3.3 V. Jei naudojate 3.3 V Arduino Pro Mini, ši atsargumo priemonė nebūtina.
2 veiksmas: įdiekite reikiamas bibliotekas
Norėdami sąveikauti su ILI9341 ekranu, turime įdiegti kai kurias bibliotekas Arduino IDE. Turime įsitikinti, kad turime šias bibliotekas:
- Adafruit_ILI9341: Tai pagrindinė biblioteka, skirta valdyti ILI9341 ekranus su Arduino.
- Adafruit_GFX: Ši biblioteka leidžia lengvai kurti pagrindines grafikas, pvz., linijas, apskritimus, stačiakampius ir kt.
Norėdami įdiegti šias bibliotekas, atidarykite Arduino IDE ir eikite į Programa > Įtraukti biblioteką > Tvarkyti bibliotekas ir ieškoti ILI9341 įdiegti atitinkamą biblioteką. Taip pat ieškokite knygyno Adafruit GFX ir įsitikinkite, kad įdiegėte tinkamą.
3 veiksmas: išbandykite TFT ekraną naudodami pagrindinį pavyzdį
Įdiegus bibliotekas, laikas išbandyti ekraną, kad įsitikintumėte, jog viskas tinkamai prijungta ir veikia. Arduino IDE yra labai išsamus pavyzdys, kuris mums labai padės. Įkelkime grafinis testas:
- Atidarykite Arduino IDE.
- Eik į Failas > Pavyzdžiai > Adafruit_ILI9341 > grafinis testas.
- Surinkite ir įkelkite pavyzdį į savo „Arduino“.
Jei viskas klostėsi gerai, ekrane turėtumėte matyti diagramų seriją, rodančią skirtingų tipų linijas, formas ir spalvas.
4 veiksmas: sukurkite praktinį projektą: parodykite analogines reikšmes ILI9341 ekrane
Vienas iš pirmųjų projektų, kuriuos galime atlikti naudodami šį ekraną, yra parodyti analoginės įvesties vertę, pvz., potenciometro įtampą. Tam naudosime jau prijungtus ekrano kaiščius, taip pat potenciometrą, prijungtą prie analoginės Arduino įvesties A0.
Šis kodas parodo, kaip galime nuskaityti analoginę potenciometro reikšmę ir parodyti ją ekrane:
#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);
}
Ši programa nuolat skaito įtampą ir rodo ją ekrane tekstiniu formatu. Jei pasukate potenciometro rankenėlę, ekrane beveik iš karto pamatysite pasikeitimą.
Mygtuko pridėjimas prie ILI9341 jutiklinio ekrano
Be informacijos rodymo, ILI9341 ekranas taip pat turi jutiklinę funkciją, jei jame yra XPT2046 valdiklis. Sukurkime paprastą pavyzdį, rodantį, kaip aptikti prisilietimus prie ekrano.
Pirmiausia turime prijungti ekrano jutiklinį valdiklį. Pagrindiniai jutiklinio valdiklio kaiščiai yra:
- TOUCH_CS: 10 kaištis.
- TOUCH_IRQ: 2 kaištis.
Atlikę šiuos ryšius, naudosimės biblioteka XPT2046_Jutiklinis ekranas aptikti prisilietimus. Žemiau palieku jums kodą, kuris rodo mygtuką ekrane, kuris keičia spalvą kiekvieną kartą paspaudus.
#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");
}
}
}
Kodas nustato, ar mygtukas buvo paspaustas, ir pakeičia jo spalvą iš raudonos į žalią. Taip pat galite pritaikyti mygtuko padėtį ir dydį pagal savo poreikius.
Labai svarbu užtikrinti, kad ekranas būtų tinkamai sumontuotas sukalibruotas kad prisilietimai tinkamai atitiktų ekrano koordinates. Jei pastebėsite, kad jutiklinis atsakas nėra tikslus, gali prireikti kalibruoti, susijusį su ekrano skiriamąja geba.