TFT Shield 2.8" 320×240 SPI для Arduino Nano — высокопроизводительный дисплей
Компоненты и материалы
| Arduino Nano R3 | × | 1 |
| TFT-дисплей 2.8" SPI 320×240 | × | 1 |
| TFT Shield для Arduino Nano | × | 1 |
О проекте
История
Цветные дисплеи сегодня доступны и распространены. Различаются по разрешению, диагонали, интерфейсу. Рассмотрим дисплей с SPI-интерфейсом, разрешением 320×240 и диагональю 2.8" (также 2.4" и 3.2"). SPI удобен — мало проводов, высокая скорость обновления.
Проблема: согласование логических уровней при подключении к 5-вольтовым Arduino. Для быстрого подключения к Nano используем TFT Shield — упрощённую версию щита для Uno.
Характеристики TFT Shield
- Размер платы: 64×49 мм
- 30-пинный разъём для Arduino Nano
- 14-пинный разъём для TFT 320×240 SPI (с тачскрином)
- Слот для microSD
- Разъём для Bluetooth-модуля HC-06
- 20-пинный разъём для камеры OV7670
- Mini USB и отдельный 2-пинный разъём для питания 5В
Сборка
Сборка простая, но внимательно следите за обозначениями контактов.
- Установите Arduino Nano на щит.
- Подключите дисплей — можно с двух сторон платы (Method 1 и Method 2).
- Подайте питание через mini USB.
Фото обоих способов сборки прилагаются.
После сборки установите библиотеку для работы с дисплеем: YATFT.
Демо 1: Графика и текст
Пример работы с текстом, графикой и тачскрином. Рекомендуется сначала прошить Nano отдельно, потом собирать.
Скетч демонстрирует:
- Шрифты (Adafruit GFX)
- Рисование окружностей, заполненных фигур, дуг, фасок
- Случайные линии
- Многократную перерисовку экрана (замер времени)
Код примера (основан на YATFT2 + Adafruit_GFX + шрифты FreeSerif/FreeSans):
#include <YATFT2.h>
#include <Adafruit_GFX.h>
#include <Fonts/FreeSerif9pt7b.h>
#include <Fonts/FreeSerifItalic24pt7b.h>
#include <Fonts/FreeSans24pt7b.h>
YATFT tft(0);
uint32_t total_time;
uint16_t Color[4] = {BRIGHTBLUE, BRIGHTGREEN, BRIGHTRED, BRIGHTYELLOW};
uint16_t Gray[7] = {GRAY0, GRAY1, GRAY2, GRAY3, GRAY4, GRAY5, GRAY6};
void ClearScreen() { tft.SetColor(BLACK); tft.ClearDevice(); }
void PrintTotalTime() { total_time = millis() - total_time; Serial.print(total_time); Serial.println(" ms"); }
void setup() {
Serial.begin(115200);
Serial.println("Arduino TFT_shield Example 1!");
tft.begin();
}
void loop() {
// 1) Fonts
ClearScreen();
tft.SetColor(BRIGHTBLUE); tft.SetFont(NULL);
tft.OutTextXY(5, 5, "Demonstration of work with the TFT display.");
tft.SetColor(BRIGHTGREEN); tft.SetFont(&FreeSerif9pt7b);
tft.OutTextXY(5, 20, "The example uses fonts from Adafruit.");
tft.SetFont(&FreeSerifItalic24pt7b); tft.SetColor(BRIGHTCYAN);
tft.OutTextXY(5, 45, "3.5''"); tft.OutTextXY(90, 45, "QVGA"); tft.OutTextXY(230, 45, "disp.");
tft.SetColor(BRIGHTYELLOW); tft.SetFont(&FreeSans24pt7b);
tft.OutTextXY(5, 100, "A R D U I N O + T F T");
// ... далее рисование фигур, замеры времени
}
Демо 2: Тачскрин
Пример работы с резистивным тачскрином (контроллер XPT2046). Используются библиотеки XPT2046_Touchscreen и SPI.
Функционал: рисование пальцем, выбор цвета из нижней панели, очистка экрана кнопкой «Clear».
Код включает калибровку координат АЦП тача в экранные (320×240), фильтрацию дрожания (усреднение 4 отсчётов) и отрисовку 3×3 пикселя текущим цветом.
Демо 3: Логическая игра «Columns»
Полная реализация игры в стиле Tetris/Columns на тачскрине. Управление: свайпы влево/вправо — движение, верх — поворот, низ — ускоренное падение.
Код включает: генерацию фигур, проверку заполненных линий, подсчёт очков, уровни сложности, рекорды, демо-режим.
Демо-видео
Продолжение следует. Спасибо за внимание!
Предыдущие статьи по TFT Shield для Uno: 1) Start, 2) OV7670 Cam Live View, 3) Arduino Bluetooth Camera.
Планы: 4) Фото и RGB-видео на TFT SPI.
Обновление 01.04.2021: Обновлённая библиотека для серии экранов (2 щита + 2 breakout) с поддержкой MegaAVR и ESP32. Подробнее: https://github.com/Ekaburg/EkaTFT
Библиотека
https://github.com/YATFT/YATFT
Производственный процесс
- Профессиональное руководство по анимации битмапов на TFT-экране ILI9341 2.4" с Visuino
- Веб-управляемая DMX-система освещения: Arduino Mega как мастер-контроллер
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- Набор Arduino Nano: CrazyCircuits, датчики DFRobot и инструменты — создавайте проекты с уверенностью
- Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
- START: Автономный Arduino-терминал с PS2-клавиатурой, LCD, Ethernet и удалённой оболочкой
- Ручной дозиметр (Гейгер-счетчик) на Arduino Nano: сборка в 3D-корпусе
- Умная система мониторинга температуры для школ: точно, в реальном времени, безопасно
- Библиотека 8-битного порта ввода-вывода для Arduino — расширение цифрового управления
- Беспроводная прошивка Arduino через Bluetooth HC-05: щит без USB-кабеля