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

ILI9488Arduino Uno
1.TFT_CSA5
2.TFT_DCA3
3.TFT_RSTA4
4.TFT_LEDA0
5.TOUCH_CS2
6.TOUCH_CLK3
7.TOUCH_OUT4
8.TOUCH_IN5
9.TOUCH_IRQ6
  • Arduino Uno — «3,5» TFT LCD for arduino uno»
  • Arduino Mega — «3.8’/3.95′ LCD MODULE for Mega2560»
Наложение Arduino Uno с ILI9488
Рисунок 1. Наложение Arduino UNO с ILI9488

Пример кода Arduino для работы с дисплеем ILI9488

Теперь давайте рассмотрим код для Arduino Mega и дисплея ILI9488, используя библиотеки UTFT.h и URTouch.h. Написанная программа на языке С/C++ использует две функции setup и loop . setup() инициализирует дисплей и сенсорную панель, выводит сообщение на экране. loop() постоянно проверяет касание экрана. При наличии касания считывает координаты и отображает их на дисплее.
#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); } } }

Основные шаги работы программы:

  1. Инициализация дисплея и сенсорной панели:
    • В начале программы создаются объекты для дисплея и сенсорной панели, указываются пины для управления.
    • В функции
      setup
      происходит инициализация дисплея (tft.Init_LCD()) и настройка его ориентации (tft.Set_Rotation(1)). Также экран очищается, заливается черным цветом, и выводится сообщение «Touch the screen!» белым цветом, приглашая пользователя коснуться экрана.
    • Сенсорная панель инициализируется с помощью функции TP_Init, где указываются размеры экрана и ориентация сенсора. Также с помощью TP_Set_Rotation(1) устанавливается ориентация сенсорной панели, чтобы ее положение совпадало с ориентацией дисплея.
  2. Цикл loop:
    • В основном цикле программа постоянно проверяет, есть ли касание экрана с помощью TP_Scan(0).
    • Если экран был коснут, TP_Read_Coordinate(&touchX, &touchY) считывает координаты касания (горизонтальное и вертикальное положение) и сохраняет их в переменные touchX и touchY.
  3. Отображение координат на экране:
    • Если координаты были успешно считаны, очищается часть экрана, где будут выводиться координаты, чтобы обновить данные.
    • Далее координаты выводятся зеленым цветом с помощью Print_Number_Int, показывая, где именно произошло касание.

Заключение

Надеюсь, данная статья поможет вам успешно подключить и использовать дисплей ILI9488 с Arduino, используя соответствующие библиотеки.