Рубрики
Схемы на Arduino

Подключение TFT ЖК дисплея к Arduino Uno – полное руководство

В этой статье мы рассмотрим подключение TFT ЖК дисплея (TFT LCD Shield) диагональю 2.4 дюйма, выполненного в виде шилда (расширения), к плате Arduino Uno. С помощью этого цветного ЖК дисплея TFT типа мы можем отображать символы, строки, блоки, изображения и т.д. Также мы можем использовать этот TFT Shield в различных устройствах на основе Arduino: охранные системы, автоматизация дома, игры и др.

Подключить TFT ЖК дисплей к плате Arduino достаточно просто. Нам будут необходимы плата Arduino, TFT Shield (дисплей) с диагональю 2.4 дюйма и библиотека Arduino IDE & TFT. В интернете можно найти много драйверов для TFT Shield’ов Arduino, но различные TFT ЖК дисплеи имеют различные встроенные драйверы. Таким образом, сначала необходимо идентифицировать драйвер TFT ЖК дисплея и затем установить подходящую библиотеку для него. В этом проекте мы будем использовать TFT ЖК дисплей (шилд) с драйвером ili9341. Далее в статье представлена ссылка для скачивания необходимой библиотеки для этого драйвера (дисплея). Также, если интересно, можете прочитать статью про подключение обычного ЖК дисплея к плате Arduino.

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Arduino Uno (купить на AliExpress).
  2. 2.4” TFT LCD display Shield (шилд TFT ЖК дисплея) (купить на AliExpress).
  3. USB кабель.

Программное обеспечение

Arduino IDE
TFT библиотека для Arduino (spfd5408)

Работа схемы

Вам в этом случае необходимо только вставить TFT Shield поверх платы Arduino как показано на рисунке. Данный TFT Shield совместим с Arduino UNO и Arduino mega.

Установка TFT library (библиотеки) в среду Arduino IDE

Шаг 1: Скачайте TFT library для Arduino по приведенной ссылке сделайте ее zip архивом (если она таковым не является): https://github.com/JoaoLopesF/SPFD5408.

Шаг 2: Скопируйте этот архив с библиотекой в папку библиотек Arduino в Program Files.

Шаг 3: Откройте Arduino IDE и выберите пункт меню Sketch -> Include Library -> Add .ZIP Library.

Затем откройте папку библиотек Arduino в Program Files (My Computer -> C: Drive -> Program Files -> Arduino -> libraries), куда вы скопировали zip архив с необходимой библиотекой на шаге 2 и выберите и откройте в ней заархивированную библиотеку SPFD5408-Master.

После открытия библиотеки SPFD5408 Master вы увидите что она установилась в Arduino IDE.

Шаг 4: Теперь в Arduino IDE выберите File -> Example -> SPFD5408-master -> spfd5408_graphictest. Откройте его, скомпилируйте и загрузите в плату Arduino.

Вы увидите результаты работы программы на TFT ЖК дисплее. Вы можете изменять этот файл по своему желанию чтобы он выполнял нужные вам задачи.

Примечание: аналогичные шаги можно использовать чтобы установить любую другую библиотеку в программную среду Arduino IDE.

Видео, демонстрирующее работу проекта

18 ответов к “Подключение TFT ЖК дисплея к Arduino Uno – полное руководство”

Я тоже долго мучился пока запустил такой тач а потом ещё долго пытался разобраться с зеркальным изображением…
У меня начал нормально работать когда поменял на нужный код в этой строчке:
tft.begin(0x8357)
ищите в скетчах в объяснениях список вариантов и возможно и вам повезёт.

Спасибо, что своим комментарием помогли тем, кто будет читать эту статью и у него тоже возникнет аналогичная проблема. А не подскажите какой именно код вы использовали вместо tft.begin(0x8357)?

Хорошо, спасибо, я посмотрел. Видимо, метод описанный там, действительно помогает при зеркальном изображении на экране дисплея

А я писал вам 04.12. Те библиотеки не работают. Монитор порта выдал-Initializing LCD …
Reading ID … 0x0000,Loading LCD registers …
Filling the screen …
Done filling …
It your screen filled red you may be able to use the library at misc.ws. Я зашел на сайт, прошел по ссылкам, попал на комментарии и тд. Еще больше сложностей для меня.

Мне вам сложно чем то помочь потому что у вас при внесении изменений в библиотеку почему то ничего не меняется. Ну может половину библиотеки удалите и посмотрите меняется что-нибудь или нет. Попробуйте, как я вам советовал, полностью удалить библиотеку из Arduino IDE, внести в нее изменения, и только потом снова подключать ее в Arduino IDE. Попробуйте также внести небольшие изменения в текст примера, который вы используете (цвет текста, толщину линий или что-нибудь другое). Если ваша схема вообще не реагирует на вносимые изменения, то тут ничем уже нельзя помочь, поэтому первым делом вам сейчас нужно разобраться реагирует ли ваш проект вообще на какие-нибудь изменения.
Идеально было бы попробовать работу схемы с другим аналогичным дисплеем. Может быть, в вашем дисплее брак — перепутано два контакта данных, к примеру.

Так они используют другую библиотеку (TFTLCD), в используемой в нами библиотеке нет строк
//#define INVERT_X
//#define INVERT_Y

В нашей библиотеке есть функция

void Adafruit_GFX::invertDisplay(boolean i) {
// Do nothing, must be subclassed if supported
}

По названию видно что она как раз и предназначена для инвертирования изображения. Но, как видите, она пустая — то есть ничего не делает. Автор библиотеки ее попросту не запрограммировал. Можно попробовать найти более свежие версии этой библиотеки — может быть там автор уже запрограммировал эту функцию.
А вы библиотеку из представленной по вашей ссылке статьи пробовали использовать? Работает она у вас или нет?
И там у них на сайте описан еще скетч LCD_ID_Reader.ino — с его помощью можно проверить работу TFT LCD дисплея, не используя никаких библиотек. Вы его пробовали запускать?

Изменял в rotation и в textsize значения от 0 до 3.Перебрал много вариантов. Все тоже.

Такое ощущение что изменения, которые вы вносите в библиотеку, не работают. Ведь если мы меняем ее, должно и на экране что то меняться. Попробуйте в самом скачанном архиве библиотеки внести изменения (например, textsize измените), а только потом подключите ее в Arduino IDE. И на каком сайте вы нашли, что в случае вашей проблемы нужно задать переворот по осям x и y. Я посмотрю эту статью

Пробовал. На дисплее текст в зеркальном положении-Touch to proceed и тонкие линии в разных положениях, и текст Hello World!

Давайте тогда удостоверимся в том, что при внесении изменений в библиотеку у вас точно изображение на экране меняется.
В начале библиотеки есть строки:
Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h):
WIDTH(w), HEIGHT(h)
{
_width = WIDTH;
_height = HEIGHT;
rotation = 0;
cursor_y = cursor_x = 0;
textsize = 1;
textcolor = textbgcolor = 0xFFFF;
wrap = true;
_cp437 = false;
}

Попробуйте в ней изменять размер текста (textsize = 1;) на 2 или 3, цвет (textcolor = textbgcolor = 0xFFFF). Можно еще в других функциях библиотеки изменить логику рисования геометрических фигур

Изменял значения параметра rotation от 0 до 3-ориентация не менялась. Верно ли все делал.
Пуск-Документы-Ардуино-libraries- SPFD5408 Master- SPFD5408_Adafruit_GFX- изменил параметр- сохранил-
-Ардуино -Примеры-SPFD5408 Master-graphicstest.

Да вроде все правильно. А SPFD5408_rotationtest вы не пробовали?

Как утверждал продавец с али драйвер SPFD5408.У JoaoLopes cкачал Reader-«определитель» драйвера.
Он показал ID-0Х0000.Пробовал разные примеры. SPFD5408_tftpaint очень наглядный пример. Не знаю как вставить видео в этот комментарий. На одном сайте говорилось, что нужно задать переворот по осям x и y.
Ссылаются на функции рисования примитивов ( линий, точек и тд.). Я новичок в Ардуино. Где в библиотеке SPFD5408 это найти?

Вы используете библиотеку, расположенную по адресу https://github.com/JoaoLopesF/SPFD5408/blob/master/SPFD5408_Adafruit_GFX.cpp?
К сожалению, лично не могу пока попробовать ее работу, но с вашей помощью можем попробовать в ней разобраться.
Там в начале библиотеки есть строки:
Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h):
WIDTH(w), HEIGHT(h)
{
_width = WIDTH;
_height = HEIGHT;
rotation = 0;
cursor_y = cursor_x = 0;
textsize = 1;
textcolor = textbgcolor = 0xFFFF;
wrap = true;
_cp437 = false;
}
Попробуйте задавать различные значения параметра rotation — вместо 0 попробуйте значения 1,2 и 3. Там дальше, если смотреть код этой библиотеки, этот параметр как раз и определяет ориентацию экрана

Подключил и все сделал как показано на сайте. Но все в зеркальном положении.

Странный эффект. А вы точно использовали TFT ЖК дисплей (шилд) с драйвером ili9341? Кроме spfd5408_graphictest пробовали другие примеры из библиотеки SPFD5408 Master?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *