Днес TFT дисплеите с контролера ILI9341 са една от най-популярните опции за проекти за създаване на прототипи на Arduino поради тяхната гъвкавост и графични възможности. Ако сте търсили как да се възползвате от тези екрани във вашите проекти, вие сте попаднали на правилното място. Тук обясняваме всичко, което трябва да знаете, за да свържете, конфигурирате и използвате TFT екрана ILI9341, а също така ще видим някои много полезни примери за кодове.
Работата с този дисплей може да изглежда сложна в началото поради броя на необходимите щифтове и връзки, но след като разберете процеса, той става много по-прост. В тази статия ще видим стъпка по стъпка как да направите връзката, да я тествате и програмирате.
Материали, необходими за използване на дисплея ILI9341 с Arduino
- Arduino UNO или 3.3V Arduino Pro Mini: Ако използвате a Arduino UNO, ще ви трябват адаптери за логическо ниво, за да избегнете повреда на екрана, тъй като работи с 3.3 V. Ако използвате 3.3V Arduino Pro Mini, можете да се свържете директно.
- TFT екран ILI9341: 2.4 или 2.8 инчов екран с резолюция 240x320 пиксела.
- Преобразувател на логически нива (ако използвате Arduino UNO): за адаптиране на нивата от 5V до 3.3V.
- Макет y кабели на връзка.
Стъпка 1: Свържете дисплея ILI9341 към Arduino
TFT дисплеят ILI9341 използва SPI интерфейса за комуникация с Arduino, така че ще бъде важно да направите правилните връзки между SPI щифтовете на Arduino и дисплея. Следната таблица обяснява подробно как да направите основните връзки:
щифт на екрана | Arduino Pin |
---|---|
SDO (MISO) | Щифт 12 |
SCK | Щифт 13 |
SDI (MOSI) | Щифт 11 |
D / C | Щифт 9 |
CS | Щифт 10 |
GND | Пин GND |
VCC | Пин 3.3V |
Светодиод | Пин 3.3V |
Не забравяйте, че ако използвате a Arduino UNO, ще е необходимо да се използва адаптери на логическо ниво за преобразуване на 5V на щифтовете на Arduino в 3.3V. Ако използвате 3.3 V Arduino Pro Mini, тази предпазна мярка не е необходима.
Стъпка 2: Инсталирайте необходимите библиотеки
За да взаимодействаме с дисплея ILI9341, трябва да инсталираме някои библиотеки в Arduino IDE. Трябва да сме сигурни, че имаме следните библиотеки:
- Adafruit_ILI9341: Това е основната библиотека за управление на дисплеи ILI9341 с Arduino.
- Adafruit_GFX: Тази библиотека улеснява създаването на основни графики като линии, кръгове, правоъгълници и др.
За да инсталирате тези библиотеки, отворете Arduino IDE и отидете на Програма > Включване на библиотека > Управление на библиотеки и търсене ILI9341 за да инсталирате съответната библиотека. Освен това потърсете книжарницата Adafruit GFX и се уверете, че сте инсталирали правилния.
Стъпка 3: Тествайте TFT екрана с основен пример
След като библиотеките са инсталирани, е време да тествате екрана, за да се уверите, че всичко е правилно свързано и работи. Arduino IDE включва много пълен пример, който ще ни бъде от голяма полза. Нека заредим графичен тест:
- Отворете Arduino IDE.
- Отидете на Файл > Примери > Adafruit_ILI9341 > графичен тест.
- Компилирайте и качете примера във вашия Arduino.
Ако всичко е минало добре, трябва да видите поредица от графики, показващи различни видове линии, форми и цветове на екрана.
Стъпка 4: Създайте практически проект: Показване на аналогови стойности на екрана ILI9341
Един от първите проекти, които можем да направим с този екран, е да покажем стойността на аналогов вход, като например напрежението на потенциометър. За целта ще използваме щифтовете на дисплея, които вече сме свързали, както и потенциометър, свързан към аналоговия вход A0 на Arduino.
Следният код показва как можем да прочетем аналоговата стойност на потенциометъра и да я покажем на екрана:
#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);
}
Тази програма непрекъснато отчита напрежението и го показва на екрана в текстов формат. Ако завъртите копчето на потенциометъра, трябва да видите промяната, отразена на екрана почти веднага.
Добавяне на бутон към сензорния екран ILI9341
В допълнение към показването на информация, дисплеят ILI9341 има и възможност за докосване, ако е оборудван с контролера XPT2046. Нека създадем прост пример, който показва как да разпознаваме докосвания на екрана.
Първо, трябва да направим връзки на сензорния контролер на екрана. Основните щифтове за сензорния контролер са:
- TOUCH_CS: Пин 10.
- TOUCH_IRQ: Пин 2.
След като направим тези връзки, ще използваме библиотеката XPT2046_Сензорен екран за откриване на докосвания. По-долу ви оставям код, който показва бутон на екрана, който променя цвета си при всяко натискане.
#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");
}
}
}
Кодът разпознава дали бутонът е бил натиснат и променя цвета си от червен на зелен. Можете също така да персонализирате позицията и размера на бутона според вашите нужди.
Важно е да се уверите, че екранът е правилен калибриран така че докосванията да съответстват правилно на координатите на екрана. Ако забележите, че реакцията на докосване не е точна, може да е необходимо калибриране, свързано с разделителната способност на екрана.