~ cd arduino к tft ili9488: код, библиотеки и схема подключения
Сводка
Дисплей ILI9488 — это качественный и яркий TFT LCD дисплей с разрешением 320×480 пикселей, способный выводить насыщенные и четкие изображения. Этот дисплей имеет широкие углы обзора, что делает его идеальным для различных проектов, включая умные устройства, контрольные панели и прочие самодельные устройства.
Библиотеки для дисплея ILI9488
Библиотеки LCDWIKI_GUI, LCDWIKI_SPI и LCDWIKI_TOUCH созданы для упрощения работы с графическими дисплеями на микроконтроллерах Arduino, обеспечивая функциональное разделение для работы с графикой, управлением через SPI и сенсорными экранами.
Библиотека LCDWIKI_GUI: Библиотека базового графического интерфейса, предоставляющая обширный набор функций для рисования примитивов, отображения текста и работы с цветами на экране. Она облегчает создание графических элементов и служит основой для других библиотек. Скачать и прочитать документацию по UTFT.h можно на github.
Библиотека LCDWIKI_SPI: Отвечает за взаимодействие с дисплеями через интерфейс SPI. Она поддерживает различные модели контроллеров, включая ILI9488, и обеспечивает настройку и управление дисплеем, включая цветопередачу и поворот экрана. Ссылка на скачивание — github.
Библиотека LCDWIKI_TOUCH: Позволяет интегрировать сенсорные экраны, управляя получением данных о касаниях и координатах. Поддерживает работу с резистивными сенсорами, реализуя программный SPI, что дает гибкость при использовании любых цифровых пинов Arduino. Ссылка на скачивание — github.
Схема подключения Arduino к ILI9488
Схема подключения между Arduino и ILI9488 очень проста! Накладываем сверху(ПРОМАХУТЬСЯ НЕ ВОЗМОЖНО). Для каждого Arduino свой формат платы:
Таблица 1. Подключение Arduino Uno с ILI9488
| № | ILI9488 | Arduino Uno | 
|---|---|---|
| 1. | TFT_CS | A5 | 
| 2. | TFT_DC | A3 | 
| 3. | TFT_RST | A4 | 
| 4. | TFT_LED | A0 | 
| 5. | TOUCH_CS | 2 | 
| 6. | TOUCH_CLK | 3 | 
| 7. | TOUCH_OUT | 4 | 
| 8. | TOUCH_IN | 5 | 
| 9. | TOUCH_IRQ | 6 | 
- Arduino Uno — «3,5» TFT LCD for arduino uno»
- Arduino Mega — «3.8’/3.95′ LCD MODULE for Mega2560»

Пример кода Arduino для работы с дисплеем ILI9488
#include <LCDWIKI_TOUCH.h>    // Библиотека для работы с сенсорной панелью
#include <cali_para.h>
#include <mcu_touch_magic.h>
#include <LCDWIKI_SPI.h>      // SPI-библиотека для работы с дисплеем ILI9488
#include <lcd_spi_registers.h>
#include <mcu_spi_magic.h>
#include <LCDWIKI_GUI.h>      // Библиотека GUI для дисплея      
// Определение цветов
#define BLACK   0x0000
#define WHITE   0xFFFF
#define GREEN   0x07E0
// Настройка пинов для дисплея ILI9488
#define TFT_CS   A5       // Chip Select для дисплея
#define TFT_DC    A3       // Data/Command для дисплея
#define TFT_RST   A4       // Reset для дисплея (установите -1, если не используется)
#define TFT_LED   A0      // Подсветка (если есть, иначе -1)
// Настройка пинов для сенсорной панели
#define TOUCH_CS  2       // Chip Select для сенсорной панели
#define TOUCH_CLK 3      // Clock для сенсора
#define TOUCH_OUT 4      // MISO для сенсора
#define TOUCH_IN  5      // MOSI для сенсора
#define TOUCH_IRQ 6       // Пин прерывания для сенсора (если используется)
// Инициализация дисплея и сенсорной панели
LCDWIKI_SPI tft(ILI9488, TFT_CS, TFT_DC, TFT_RST, TFT_LED); // Инициализация дисплея ILI9488
LCDWIKI_TOUCH ts(TOUCH_CS, TOUCH_CLK, TOUCH_OUT, TOUCH_IN, TOUCH_IRQ); // Инициализация сенсорной панели
void setup() {
  // Инициализация дисплея
  tft.Init_LCD();
  tft.Fill_Screen(BLACK);
  tft.Set_Rotation(1); // Ориентация экрана (1 - горизонтальная)
  // Инициализация сенсорной панели
  ts.TP_Set_Rotation(1);
  ts.TP_Init(tft.Get_Rotation(),tft.Get_Display_Width(),tft.Get_Display_Height()); 
  // Приветственное сообщение на дисплее
  tft.Set_Text_colour(WHITE);
  tft.Set_Text_Size(2);
  tft.Print_String("Touch the screen!", 10, 10);
}
void loop() {
  uint16_t touchX, touchY;
  // Проверка нажатия на экран
  if (ts.TP_Scan(0)) { // Режим 0 - однократное сканирование касания
    if (ts.TP_Read_Coordinate(&touchX, &touchY)) { // Чтение координат касания
      // Очищаем область для отображения координат
      tft.Fill_Rect(10, 40, 300, 50, BLACK);
      // Отображаем координаты касания на экране
      tft.Set_Text_colour(GREEN);
      tft.Print_String("Touch at: ", 10, 40);
      tft.Print_Number_Int(touchX, 100, 40, 4, ' ', 10);
      tft.Print_String(",", 140, 40);
      tft.Print_Number_Int(touchY, 150, 40, 4, ' ', 10);
    }
  }
}
Основные шаги работы программы:
- Инициализация дисплея и сенсорной панели:
- В начале программы создаются объекты для дисплея и сенсорной панели, указываются пины для управления.
- В функции setupпроисходит инициализация дисплея (tft.Init_LCD()) и настройка его ориентации (tft.Set_Rotation(1)). Также экран очищается, заливается черным цветом, и выводится сообщение «Touch the screen!» белым цветом, приглашая пользователя коснуться экрана.
- Сенсорная панель инициализируется с помощью функции TP_Init, где указываются размеры экрана и ориентация сенсора. Также с помощью TP_Set_Rotation(1) устанавливается ориентация сенсорной панели, чтобы ее положение совпадало с ориентацией дисплея.
 
- Цикл loop:
- В основном цикле программа постоянно проверяет, есть ли касание экрана с помощью TP_Scan(0).
- Если экран был коснут, TP_Read_Coordinate(&touchX, &touchY) считывает координаты касания (горизонтальное и вертикальное положение) и сохраняет их в переменные touchX и touchY.
 
- Отображение координат на экране:
- Если координаты были успешно считаны, очищается часть экрана, где будут выводиться координаты, чтобы обновить данные.
- Далее координаты выводятся зеленым цветом с помощью Print_Number_Int, показывая, где именно произошло касание.
 
Заключение
Надеюсь, данная статья поможет вам успешно подключить и использовать дисплей ILI9488 с Arduino, используя соответствующие библиотеки.