Tft дисплей 3.2 с открытым исходным кодом

Работа с TFT дисплеем на ARDUINO DUE

Вторая часть здесь: http://habrahabr.ru/post/196864/ Эта статья открывает небольшой цикл статей, посвященных работе с многоцветными TFT дисплеями на Arduino DUE.

В этой и следующих статьях будут рассмотрены основные возможности TFT дисплеев, приведено описание библиотек, рассмотрены примеры типичных задач, возникающих при работе с такими дисплеями.В настоящее время на рынке Arduino-комплектующих присутствует множество разнообразных TFT дисплеев.

С точки зрения пользователя они отличаются друг от друга, главным образом, размерами, разрешающей способностью, способами подключения и дополнительным функционалом.

Большинство таких дисплеев оборудовано сенсорным экраном, делающим управление системой более удобным и позволяющим избавиться от традиционных кнопок, джойстиков, энкодеров и других механических приспособлений.

Работа с графическим дисплеем с разрешением порядка 320х240 и выше предполагает наличие солидного объема памяти и достаточно высокое быстродействие самого микроконтроллера. Кроме того подключение часто требует большого количества пинов, поэтому в качестве базы был выбран контроллер Arduino DUE.

В качестве «экспериментальной установки» при написании этой статьи было использовано следующее оборудование:

  • Контроллер Arduino DUE — Arduino-cовместимый клон Iduino от Getech.
  • TFT дисплей: после долгих раздумий был выбран «продвинутый» вариант дисплея Coldtears Electronics 3,2’’, отличающийся повышенным разрешением (480х320 вместо 320х240 у большинства аналогичных дисплеев) и дополнительным функционалом (у этого дисплея имеется встроенная Flash-память, в которую вшиты дополнительные шрифты и иконки, что позволяет отказаться от загрузки дополнительных шрифтов, сэкономив тем самым драгоценную память контроллера). Дисплей оборудован контроллером ILI948. На плате также установлен разъем для SD-карты.
  • Специальный шильд для подключения дисплея к контроллеру Arduino DUE. Этот шильд позволяет подключить дисплей через 16-битный параллельный интерфейс, а Flash-память через ISP разъем Arduino, что, по уверению разработчиков, обеспечивает максимальную производительность. Шильд также оборудован разъемом для SD-карты (по умолчанию он отключен, для включения его необходимо замкнуть перемычку на плате, но об этом – чуть позже).

Обратите внимание, шильд разработан именно для Arduino DUE. Для использования дисплея с Arduino MEGA нужна другая версия шильда, оборудованная преобразователем уровня 5в–3.3в. Все материалы, касающиеся распиновки дисплея и CTE шильда можно скачать на сайте производителя:

Дисплей: http://coldtears.lin3.siteonlinetest.com/files/3.2b.zip

Шильд: http://coldtears.lin3.siteonlinetest.com/files/CTE_DUE_shield.zip
Для работы с TFT дисплеями используется набор библиотек UTFT. Наиболее свежие версии этих библиотек можно найти на сайте разработчика: http://www.henningkarlsen.com/electronics/ После подключения дисплея остаются свободными следующие пины контроллера: D0, D1, D8, D11-D13, D14-D24, D29-D31, D41-D43, A0-A11, DAC0, DAC1, SCL1, SDA1, которые можно использовать по своему усмотрению.

1. Базовая библиотека UTFT. Общие сведения

Библиотека UTFT предназначена для работы с TFT дисплеями различных типов, подключаемых как по параллельному (8бит или 16бит), так и по последовательному интерфейсу. Первоначально она разрабатывалась для поддержки дисплеев производства ITead Studio и NKG Electronics, однако потом в нее была включена поддержка нескольких других производителей.

Оригинал библиотеки можно скачать здесь: http://www.henningkarlsen.com/electronics/library.php?id=51 Библиотека поставляется с довольно неплохой документацией на английском языке. Данная статья основывается, главным образом, на документации разработчика с добавлением некоторого количества практического опыта и дополнительных сведений, которые были получены в процессе работы.

Список поддерживаемых библиотекой дисплеев и их основные особенности приводятся в сопроводительном документе “UTFT Supported display modules & controllers”, который поставляется вместе с библиотекой. Эта библиотека является базовой и содержит только основной функционал вывода на дисплей.

К ней существует несколько дополнений, в которых реализованы дополнительный функции, такие как управление при помощи сенсорного экрана (U_Touch), работа с экранными кнопками (UTFT_Buttons), расширенный набор функций для рисования графических примитивов (UTFT_Geometry), использование встроенных в некоторые дисплеи шрифтов и иконок (UTFT_CTE) и т. д.

Базовая библиотека позволяет работать с подгружаемыми шрифтами. Шрифты хранятся в виде массивов данных, которые размещаются в отдельных файлах и подключаются к тексту программы.

2. Начало работы с библиотекой

Библиотека может быть использована как с контроллерами, основанными на AVR платформе (Arduino MEGA), так и с контроллерами на ARM платформе (Arduino DUE).

Прежде чем начать использовать библиотеку с контроллером Arduino DUE необходимо зайти в папку, в которую установлена библиотека: _ARDUINO_FOLDER_/libraries/UTFT, найти там папку /hardware/arm и в ней файл HW_ARM_defines.

В этом файле необходимо раскомментировать строку:

#define CTE_DUE_SHIELD 1

У библиотеки UTFT есть также полезная «фишка», которая позволяет отключить коды инициализации тех моделей дисплеев, которые в данный момент не используются. Это позволяет сэкономить некоторое количество памяти (например, у меня объем скомпилированной программы уменьшился почти на 12Кбайт). Для этого необходимо открыть в редакторе файл memorysaver.

h, расположенный в корневой папке библиотеки и раскомментировать строки с названиями тех контроллеров, которые Вы не планируете использовать в своем проекте. При этом закомментированным должен остаться только один контроллер – тот, что Вы используете. Наш дисплей, как уже говорилось выше, оборудован контроллером ILI9481.

Поэтому строчку:

//#define DISABLE_ILI9481 1 // CTE32HR

оставляем закомментированной, а в остальных строках удаляем все символы // в начале строк. Теперь можно работать. Использование библиотеки в проекте начинается с ее подгрузки и инициализации. Параметры инициализации зависят от типа используемого дисплея. Подгружаем базовую библиотеку UTFT и создаем объект – дисплей с именем myGLCD.

Параметры – идентификатор модели дисплея и номера пинов, к которым подключаются линии RS, WR, CS, RST и ALE. Эти параметры следует выяснить у производителя дисплея или подобрать по списку поддерживаемых дисплеев, который поставляется вместе с библиотекой.

В нашем варианте – дисплей 3,2’’ с разрешением 480х320 и контроллером ILI9481 производства Coldtears electronics обозначается как CTE32HR. При этом, согласно схеме шильда, управляющие линии подключаются к пинам 25-28.

#include
UTFT myGLCD(CTE32HR,25,26,27,28); Далее, необходимо подключить внешние шрифты (использовать встроенные шрифты дисплея пока не будем – это тема для отдельного разговора). Библиотека поставляется с тремя базовыми шрифтами. Вот так выглядят строки объявления для этих шрифтов:

extern uint8_t SmallFont[];

extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[]; Итак, мы подключили и инициализировали библиотеку, присоединили шрифты, теперь мы должны выполнить инициализацию нашего дисплея в процедуре void setup():

void setup() {

myGLCD.InitLCD();
myGLCD.clrScr();
} Команда InitLCD() позволяет задать вертикальную или горизонтальную ориентацию дисплея. По умолчанию (если команда вызывается без параметра) устанавливается горизонтальная ориентация. Команда clrScr(); просто очищает дисплей. Обратите внимание, в библиотеке нет понятия фонового цвета всего дисплея. После очистки дисплей всегда становится черным. Ну и наконец, прежде чем мы перейдем к подробному рассмотрению команд библиотеки, закончим наш самый простой пример — выберем шрифт BigFont и напечатаем традиционное «Hello, world!» в центре верхней строки дисплея:

void loop() {

myGLCD.setFont(BigFont);
myGLCD.print(“Hello, world!”,CENTER,0);
}

3. Команды библиотеки

При работе с библиотекой необходимо установить ее в папку с библиотеками Arduino и подключить при помощи директивы:

Читайте также:  Программатор для перепрограммирования чипов принтеров

#include

Описание команд взято, главным образом, из англоязычного мануала, поставляемого вместе с библиотекой, и значительно дополнено практическими наблюдениями и примерами. Итак…

UTFT – создает базовый класс дисплея с заданным именем, в качесте параметров указывается идентификатор модели и способ подключения.

Возможны два варианта: для моделей с параллельным интерфейсом команда имеет вид:

UTFT _NAME_ (model, RS, WR, CS, RST, ALE) где _NAME_ — произвольное имя объекта «дисплей», которое будет использоваться в качестве префикса при любом обращении к нему, model – идентификатор модели конкретного дисплея (см. список поддерживаемых моделей), а RS, WR, CS, RST и ALE – номера пинов, к которым посредством шильда подключены соответствующие управляющие сигналы дисплейного модуля. Сигнал ALE есть не у всех поддерживаемых моделей, если в Вашей модели его нет – просто пропустите этот параметр.

Для моделей с последовательным интерфейсом команда имеет вид:

UTFT _NAME_ (model, SDA, SCL, CS, RST, RS) где SDA, SCL, CS, RST и RS – номера пинов, к которым подключены соответствующие сигналы последовательного интерфейса. Параметр RS – опциональный, для некоторых моделей дисплеев он не задается.

Строка с этой командой размещается в области определений и должна предшествовать любым другим командам библиотеки. Заданное имя дисплея должно использоваться в качестве префикса ко всем последующим командам библиотеки.

InitLCD – инициализирует дисплей и задает горизонтальную или вертикальную ориентацию. В качестве параметра указывается идентификатор ориентации.

Будучи заданной без параметров команда устанавливает горизонтальную ориентацию. Если указать параметр PORTRAIT или 0 – будет выбрана вертикальная ориентация, если указать LANDSCAPE или 1 – горизонтальная. При горизонтальной ориентации разъемы контроллера располагаются слева, при вертикальной – внизу.

Остальные варианты не предусмотрены. Задание в качестве параметра других чисел, кроме 0 и 1 приводит к искаженному выводу информации на дисплей.

Эта команда обычно используется в разделе void setup() но ее можно использовать и в основном цикле программы, как, например, здесь:#include
UTFT myGLCD(CTE32HR,25,26,27,28);
extern uint8_t BigFont[];
void setup() { }
void loop() {
myGLCD.InitLCD(1);
myGLCD.setFont(BigFont);
myGLCD.

print(“Hello, world!”,CENTER,0); delay(1000);
myGLCD.InitLCD(0);
myGLCD.setFont(BigFont);
myGLCD.

print(“Hello, world!”,CENTER,0); delay(1000);
}
В принципе, присоединив к дисплею датчик положения, можно было бы организовать переворот экрана как в планшете ;)) правда при инициализации дисплей на короткое время вспыхивает белым цветом, что несколько портит впечатление.

😉 Эта команда устанавливает черный цвет фона, белый цвет текста, сбрасывает имя используемого шрифта в «none», при этом результат работы всех команд печати становится непредсказуемым до тех пор, пока не будет явно задан шрифт (см. команду setFont). После инициализации рекомендуется выполнить очистку дисплея (см. команду clrScr), при этом экран будет залит черным цветом.

clrScr – очищает дисплей, стирая всю отображаемую на дисплее информацию и заливая дисплей черным цветом. Параметров не имеет.

При очистке дисплея заданный цвет фона (см. команду setBackColor) не сбрасывается и остается прежним, но дисплей все равно заливается черным цветом. Для того, чтобы очистить дисплей с другим цветом фона необходимо использовать команду fillScr.

Работу команды clrScr иллюстрирует следующий пример:#include
UTFT myGLCD(CTE32HR,25,26,27,28);
extern uint8_t BigFont[];
void setup() {
myGLCD.InitLCD();
delay(1000);
myGLCD.setBackColor(0,255,0);
myGLCD.clrScr();
delay(1000);
myGLCD.setFont(BigFont);
myGLCD.

print(“FFFFFFFF”, CENTER,0);
}
void loop() { }
После сброса контроллера происходит инициализация дисплея, затем через 1 секунду очистка (дисплей становится черным) и еще через секунду выводятся символы, при этом мы видим, что заданный перед очисткой цвет фона не изменился.

Прежде чем рассматривать следующие несколько команд необходимо рассмотреть особенности задания цветов в командах библиотеки.

Система кодирования цветов

Цвета в библиотеке задаются несколькими способами. Внутренним форматом представления данных о цвете является формат RGB565. В этом формате цвет кодируется 16-битным значением, в котором уровень красного и синего кодируется пятью битами, а зеленого – шестью.

Большинство команд библиотеки, работающих с цветом, воспринимает значения, заданные в виде трех чисел, разделенных запятой. Каждое из этих чисел отвечает за уровень соответствующего цвета (R, G, B). Допустимые значения каждого числа – от 0 до 255. Таким образом, цвета задаются пользователем в формате RGB888, а внутри библиотеки используется RGB565.

Преобразование форматов выполняется внутри библиотеки по следующей формуле:

word color = ((r&248)3;
byte R_min = R_15;
byte G_min = G_1

Источник: https://habr.com/post/196600/

Два дисплея Nextion 3.2″ и 3.5″ HMI TFT LCD с тач-скрином

Подписка

  • Магазины Китая
  • ITEAD.CC
  • Радиотовары
  • Пункт №18

В этот раз на обзор попали два экранных модуля с тачскрином. Называть их дисплеем будет некорректно.

Это именно модули, со своим 32 битным ARM процессором, флеш-памятью и UART интерфейсом для подключения к чему-нибудь — Arduino, роутеру, своей самосборной железке, компьютеру, всяким Banana Pi, одноплатным микрокомпьютерам и тп.

Благодаря встроенному процессору экранный модуль позволяет хранить и отображать залитую на него графику, отрабатывать самостоятельно нажатия, реакции на нажатие, смены экранов, изменение части изображения, анимацию … Можно реализовать простую игру без подключения внешних устройств.

Nextion NX4024T032 — Generic 3.2″ HMI TFT Intelligent LCD Touch Display Module 19.90$

Nextion NX4832T035 — 3.5″ HMI TFT LCD Touch Display Module 24.90$

Подобные экраны уже обозревались, поэтому информации добавить смогу не много. Коробки и комплектация экранов одинаковы.Коробка — полуторамиллиметровый гофрокартон, плотный. Координаты производителя, сайт, QR кодТипоразмеры доступных экранов. Нет только размера 3,5″ Внутри антистатический запаянный пакет, обложенный вспененным материалом, толщиной около 1 смПровода питания и синхронизации и плата-переходничок с разъемом микро USB для подачи внешнего питания
Первая легкая неувязка — на переходнике надписи +-, на модуле дисплея — +5V и GND. Совсем начинающих может сбить с толку.Провода Rx,Tx, +5, GNDМодуль 3,2″Обратная сторона. Видно микропроцессор, стабилизатор, флешку, микроSD разъем. Есть место под разъем питания 3,3 вольта (можно подпаять).Торец платыМодуль 3,5″И для сравнения два модуля рядом

Модули 4,3″, 3,5″ и 3,2″

Характеристики

Nextion NX4024T032 — 3.2″

Тип экрана: TFT Разрешение экрана: 400*240 Тач панель: резестивная Количество цветов: 65536 Процессор: 32 бит ARM 7 48MHz ОЗУ: 2 Кбайта Флеш: 4 Мбайт Подсветка: регулируемая, 0~230 нит Видимая область: 69.60мм×41.76мм Питание: 5 В 85мА Габариты: 96*48*12 мм Вес: 75 гр

Nextion NX4832T035 — 3.5″

Тип экрана: TFT Разрешение экрана: 480*320 Тач панель: резестивная Количество цветов: 65536 Процессор: 32 бит ARM 7 48MHz ОЗУ: 3,5 Кбайта Флеш: 16 Мбайт Подсветка: регулируемая, 0~180 нит Видимая область: 73.44мм×48.96мм Питание: 5 В 145мА Габариты: 112*55*12 мм Вес: 80 гр

Использование

Модуль поставляется с уже прошитой тестовой программой. Ниже вы увидите 6 разных экранов программы и углы обзора модулей.

Тут я попытался показать углы обзора

Читаемость прилично зависит от цвета, на черном фоне искажения не так заметны.

Визуально при отклонении влево и вправо — разные углы обзора, видно неудачно реализована подсветка. Вертикальные углы большие, горизонтальные — где то 30-35 градусов от перпендикуляра. Подсветка чуть ярче у маленького экрана.

Для разработки визуальной части и программной, предназначенной только для модуля используется среда разработки Nextion Editor 0.

35 http://nextion.itead.cc/download.html. К сожалению, только под Windows.

Визуально можно разместить фон, органы управления, метки, нарисовать примитивы. Можно использовать кириллицу, только к сожалению в кодировке iso-8859-5. Здесь же запрограммировать обработку событий или вычисления. Для заливки модуля можно воспользоваться UART интерфейсом.

Но в случае большого количества графики прошивка по UART может занять до получаса. Намного быстрее воспользоваться микроCD карточкой емкостью до 32 ГБ. Записываем туда файл прошивки, вставляем в слот на модуле и подаем питание. К сожалению, слот можно использовать только для заливки пользовательской прошивки.

Для написания скетчей в Arduino есть библиотека для Arduino github.com/itead/ITEADLIB_Arduino_Nextion

Если вы не хотите использовать билиотеку или работаете с модулем например на одноплатном компьютере, здесь описано API Экрана http://wiki.iteadstudio.com/Nextion_Instruction_Set API позволяет работать с изображением, кнопками, шрифтом, рисовать графические примитивы — линию, прямоугольник, дугу, эллипс. Управлять яркостью подсветки передавать и принимать данные по UART. Работать с короткой анимацией.

Достоинства:

Простота подключения Наличие API Библиотека для Arduino Хорошее быстродействие Возможность автономно работать с загруженной программой.

Недостатки

Цена Горизонтальные углы обзора Малая пропускная способность (не получится быстро картинки загружать, о видео вообще не может быть и речи) Практически идеальна для применения в качестве умного пульта управления, систем управления умным домом, метеостанций и тп.

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Планирую купить +16 Добавить в избранное Обзор понравился +17 +31

Источник: https://mysku.ru/blog/china-stores/40709.html

TFT LCD дисплей 2.8 дюйма и Arduino

Тачскрин дисплей станет украшением для любого проекта на Arduino.

В этой статье мы рассмотрим touchscreen display shield со встроенным слотом для microSD карты. TFT дисплей имеет диагональ 2.

8″, подсветку, в которой используется 4 белых светодиода, и возможность отображения 262000 оттенков цветов (18 бит)! Дисплей имеет разрешением 240х320 пикселей с индивидуальным управлением.

Обратите внимание, что это гораздо больше, чем, например, у черно-белого LCD дисплея 5110. На шилде встроен резистивный тачскрин, что позволяет определяеть положение пальца при нажатии на экран.

Общая информация и техническые характеристики TFT LCD шилда 2.8″

TFT shield продается в полностью собранном виде, готовый к запуску. Достаточно его просто установить сверху на вашу Arduino и подключить необходимую библиотеку в Arduino IDE. Процедура установки-наладки-первого заруска займет не больше 10 минут!

На TFT шилде есть встроенный контроллер с буферизацией RAM. В результате большинство операций передается имнно шилду, а не грузят контроллер на Arduino. Для подключения шилда TFT дисплея достаточно несколько пинов: 12 пин отвечает за дисплей, 13 – за работу SD карты, если вы ее используете.

Конечно, производители не оставили нас наедине с даташитом и пожеланием “Удачи!”. Есть библиотеки, которые значительно облегчат вашу работы с TFT шилдом.

https://www.youtube.com/watch?v=fAo9LOZdTWc

Есть отличная open-source графическая библиотека, которая дает возможность рисовать пиксели, линии, прямоугольники, окружности и текст: Скачать на Github.

Кроме того, написана тач-скрин библиотека: Скачать на Github, которая определяет координаты x, y и z (давление), в которой есть пример скетча для демонстрации указанных возможностей. Данный скетч написандля Arduino, но может быть адаптирован для других микроконтроллеров!

Технические характеристики TFT дисплея:

  • Диагональ LCD TFT дисплея составляет 2.8″
  • Разрешение 240×320 пикселей, 18-bit (262000) цветовая гамма
  • Контроллер ILI9325 или ILI9328 со встроенным буфером оперативной памяти
  • Цифровой интерфейс на 8 бит, плюс 4 линейки управления
  • Использует цифровые пины 5-13 и аналоговые 0-3. Это значит, что можно использовать цифровые пины 2, 3 и аналоговые 4 и 5. Пин 12 тоже доступен, если вы не используете microSD карту
  • Совместим с любой платой Arduino '328 или Mega
  • Совместим с 5В! Может использовать питание логики 3.3 В и 5 В
  • Есть встроенный LDO регулятор 3.3 В @ 300 мА LDO regulator
  • Подсветка из 4 белых светодиодов. По умолчанию включена. Для управления можно подключить транзистор к цифровому пину с подсветкой
  • 4-х проводниковый резистивный сенсорный экран

Дополнительные вопросы и ответы

Я ознакомился с даташитом и обнаружил, что доступен SPI интерфейс. Почему вы используете параллельный интерфейс? SPI ведь лучше, будет задействовано меньше пинов!

Действительно, драйвер на дисплее поддерживает SPI, но дисплеев, которые его могут использовать нет. На тачскрин шилде соответствующие пины просто не выведены в качестве коннекторов. Скорее всего это связано с тем, что скорость передачи по SPI была бы очень медленная.

Задействованы все пины! Как я могу подключить еще что-то к Arduino?

Можно использовать protoshield или proto-screwshield. Вы можете подключить различные i2c датчики или аналоговые сенсоры к аналоговым пинам 4 и 5.

Можно использовать i2c плату расширения, чтобы получить больше пинов. Если же пинов надо действительно много, можно использовать 8 пинов для передачи данных пока TFT не записывает данные.

Это пины high-z и они не используются, пока пины WR и RD находятся в состоянии high.

Подключение TFT LCD экрана к Arduino

TFT шилд 2.8 дюйма поставляется от производителей (даже из дешевого Китая) в собранном виде. Для использования достаточно просто установить его сверху на Arduino. Никаких дополнительных проводов, никаких макеток!

Проверка LCD

Adafruit в свое время подготовили библиотеку с примером скетча для использования с этими TFT дисплеями. Библиотека не очень хорошо оптимизирована, отрабатывает не на максимальной скорости, но для знакомства с сенсорным дисплеем вполне подойдет. Кроме того, она может быть использована и для других микроконтроллеров. Как бы то ни было, сейчас нас интересует именно Arduino.

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

Вам понадобится GFX graphics core. Постумаем аналогично. Распаковываем, перекидываем в папку с библиотеками для Arduino IDE.

Если вы используете именно шилд от Adafruit, есть еще один нюанс! Откройте файл TFTLCD.h в папке с библиотеками и раскомментируйте строку, которая находится сверху:

//comment or uncomment the next line for special pinout!

#define USE_ADAFRUIT_SHIELD_PINOUT

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

Библиотека GFX Library от Adafruit

Библиотека TFT LCD library основана на графической библиотеке Adaftui GFX graphics. В GFX есть много готовых функций для основы вашего проекта. Библиотека поддерживает пиксели, линии, прямоугольники, окружности, скругленные прямоугольники, треугольники, отображение текста, поворот. Скачать ее можно по ссылке.

Пример рисования на сенсорном дисплее

Данный LCD TFT шилд имеет встроенный 2.8″ 4-х проводниковый резистивный дисплей. Его можно использовать для определения места контакта пальца, стилуса и т.п. Для работы с сенсорным дисплеем вам понадобится 4 пина на Arduino.

Скачать пример вы можете здесь: Github repository. Не забудьте разархивировать скачанный файл и переместить его в папку с библиотеками Arduino IDE.

Сенсорный дисплей подключается к Arduino следущим образом:

  • Y+ подключается к аналоговому пину 1
  • Y- подключается к цифровому пину 7
  • X+ подключается к цифровому пину 6
  • X- подключается к аналоговому пину 2

После подключения загрузите пример tftpaint_shield, который находится в библиотеке TFTLCD library. С правой стороны на экране появятся 'боксы с цветами'. Вы можете нажать на один из боксов для выбора цвета, которым будете рисовать. Нажав на левую часть экрана вы можете его очистить.

Сенсорный дисплей сделан из тонкого стекла. Он очень хрупкий. Малейшая трещина или повреждение выведет его из строя. Будьте аккуратны при переносе дисплея, особенно с его углами. Для взаимодействия с резистивным экраном можно использовать не только пальцы, но и стилусы. Понятное дело, слишком сильно давить на поверхность дисплея тоже не стоит.

Загрузка рисунков

На TFT LCD дисплее 2.8″ дюйма есть встроенный слот для micoSD карты. Этот слот можно использовать для загрузки изображений! Предварительно отформатируйте карту в FAT32 или FAT16 ( более детально особенности работы SD карты с Arduino отображены здесь).

В большинстве скетчей-примеров SD карта не будет работать. Необходимо ее предварительно инициализировать.

Для увеличения скорости обмена данных можно загрузить дополнительную библиотеку здесь: Fixes & Updates to the Arduino SD Library. Не забудьте скопировать распакованную библиотеку в соответствующую папку в Arduino IDE.

Если вы пользуетесь Arduino Mega, внесите некоторые правки в файл SD/utility/Sd2Card.h. Надо снять тег комментария со строки #define MEGA_SOFT_SPI 1. Благодаря этому для обмена данными с SD картой, Arduino Mega сможет использовать те же пины, что и классические Arduino. Для тестировки можете загрузить это изображение тигра: Download this tiger bitmap and save it to the microsd card!

Запустите Arduino IDE и выберите скетч tftbmp_shield. Загрузите его на Arduino и вуаля! На экране отобразится следующее:

Для загрузки подойдут изображения, размер которых меньше 240х320 пикселей. Рисунки надо сохранять в 24-битном BMP формате. Даже если изначально рисунок не имел 24 бита, пересохраните его, так как это самый легкий формат для чтения с помощью Arduino. Можно поворачивать рисунки с использованием процедуры setRotation().

Управление подсветкой

По умолчанию разработчики шилда считают, что вы постоянно будете использовать подсветку. Однако вы можете управлять ее яркость с помощью ШИМ выходов или вообще выключать для экономии энергии. Для этого вам понадобится немного потрудиться.

Найдите на задней стороне TFT LCD шилда 2.8″ два коннектора подсветки. С помощью ножа уберите дорожку между клемами VCC и соедините два квадрата, обозначенных Pin3. После этого вы сможете управлять подсветкой с использованием цифрового пина 3.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Источник: http://arduino-diy.com/arduino-TFT-LCD-displey-2-i-8-dyuyma

ЖК-дисплей TFT дисплей с диагональю 2,4

// IMPORTANT: Adafruit_TFTLCD LIBRARY MUST BE SPECIFICALLY// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.

// SEE RELEVANT COMMENTS IN Adafruit_TFTLCD.h FOR SETUP.

#include // Core graphics library
#include // Hardware-specific library

// The control pins for the LCD can be assigned to any digital or// analog pins…but we'll use the analog pins as this allows us to// double up the pins with the touch screen (see the TFT paint example).#define LCD_CS A3 // Chip Select goes to Analog 3#define LCD_CD A2 // Command/Data goes to Analog 2#define LCD_WR A1 // LCD Write goes to Analog 1

#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:// For the Arduino Uno, Duemilanove, Diecimila, etc.

:// D0 connects to digital pin 8 (Notice these are// D1 connects to digital pin 9 NOT in order!)// D2 connects to digital pin 2// D3 connects to digital pin 3// D4 connects to digital pin 4// D5 connects to digital pin 5// D6 connects to digital pin 6// D7 connects to digital pin 7// For the Arduino Mega, use digital pins 22 through 29

// (on the 2-row header at the end of the board).

// Assign human-readable names to some common 16-bit color values:#define BLACK 0x0000#define BLUE 0x001F#define RED 0xF800#define GREEN 0x07E0#define CYAN 0x07FF#define MAGENTA 0xF81F#define YELLOW 0xFFE0

#define WHITE 0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);// If using the shield, all control and data lines are fixed, and// a simpler declaration can optionally be used:

// Adafruit_TFTLCD tft;

void setup(void) { Serial.begin(9600);

Serial.println(F(“TFT LCD test”));

#ifdef USE_ADAFRUIT_SHIELD_PINOUT Serial.println(F(“Using Adafruit 2.8″ TFT Arduino Shield Pinout”));#else Serial.println(F(“Using Adafruit 2.8″ TFT Breakout Board Pinout”));

#endif

Serial.print(“TFT size is “); Serial.print(tft.width()); Serial.print(“x”); Serial.println(tft.height());

tft.reset();

uint16_t identifier = 0x9341; //Need hardcode here (IC)

if(identifier == 0x9325) { Serial.println(F(“Found ILI9325 LCD driver”)); } else if(identifier == 0x9328) { Serial.println(F(“Found ILI9328 LCD driver”)); } else if(identifier == 0x7575) { Serial.println(F(“Found HX8347G LCD driver”)); } else if(identifier == 0x9341) { Serial.

println(F(“Found ILI9341 LCD driver”)); } else if(identifier == 0x8357) { Serial.println(F(“Found HX8357D LCD driver”)); } else { Serial.print(F(“Unknown LCD driver chip: “)); Serial.println(identifier, HEX); Serial.println(F(“If using the Adafruit 2.8″ TFT Arduino shield, the line:”)); Serial.

println(F(” #define USE_ADAFRUIT_SHIELD_PINOUT”)); Serial.println(F(“should appear in the library header (Adafruit_TFT.h).”)); Serial.println(F(“If using the breakout board, it should NOT be #defined!”)); Serial.println(F(“Also if using the breakout, double-check that all wiring”)); Serial.

println(F(“matches the tutorial.”)); return;

}

tft.begin(identifier);

Serial.println(F(“Benchmark Time (microseconds)”));

Serial.print(F(“Screen fill “)); Serial.println(testFillScreen());

delay(500);

Serial.print(F(“Text “)); Serial.println(testText());

delay(3000);

Serial.print(F(“Lines “)); Serial.println(testLines(CYAN));

delay(500);

Serial.print(F(“Horiz/Vert Lines “)); Serial.println(testFastLines(RED, BLUE));

delay(500);

Serial.print(F(“Rectangles (outline) “)); Serial.println(testRects(GREEN));

delay(500);

Serial.print(F(“Rectangles (filled) “)); Serial.println(testFilledRects(YELLOW, MAGENTA));

delay(500);

Serial.print(F(“Circles (filled) “));
Serial.println(testFilledCircles(10, MAGENTA));

Serial.print(F(“Circles (outline) “)); Serial.println(testCircles(10, WHITE));

delay(500);

Serial.print(F(“Triangles (outline) “)); Serial.println(testTriangles());

delay(500);

Serial.print(F(“Triangles (filled) “)); Serial.println(testFilledTriangles());

delay(500);

Serial.print(F(“Rounded rects (outline) “)); Serial.println(testRoundRects());

delay(500);

Serial.print(F(“Rounded rects (filled) “)); Serial.println(testFilledRoundRects());

delay(500);

Serial.println(F(“Done!”));
}

void loop(void) { for(uint8_t rotation=0; rotation

Источник: http://www.progdron.com/ru/22-shild/357-zhk-displej-tft-displej-s-diagonalyu-2-4

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}