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 шилдом.
Есть отличная 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 LCD дисплеям для Ардуино
2 ноября в 23:09
В этом руководстве мы расскажем как использовать TFT LCD дисплеи с Arduino, начиная с базовых команд и заканчивая профессиональным дизайном.
В этой статье вы узнаете, как использовать TFT LCD с платами Arduino. Мы постараемся освятить базовые команды, а также расскажем про профессиональные дизайны и технику. По планам поле статьи можно будет научиться:
- выводить тексты, символы и цифры с нужным шрифтом;
- рисовать фигуры, такие как круг, треугольник, квадрат и т.д.;
- отображать изображения .bmp на экране;
- изменять параметры экрана, такие как вращение и инвертирование цвета;
- отображать анимацию с помощью Arduino.
Из Википедии: Жидкокристаллический дисплей с активной матрицей (TFT LCD, англ. thin-film transistor — тонкоплёночный транзистор) — разновидность жидкокристаллического дисплея, в котором используется активная матрица, управляемая тонкоплёночными транзисторами.
Представление идей на дисплеях
В проектах электроники очень важно создать интерфейс между пользователем и системой. Этот интерфейс может быть создан путем отображения полезных данных, меню и простоты доступа. Красивый дизайн не менее важен.
Для этого есть несколько компонентов. Светодиоды, 7 сегментные модули, графические дисплеи и полноцветные TFT-дисплеи. Правильный компонент для ваших проектов зависит от количества отображаемых данных, типа взаимодействия с пользователем и емкости процессора.
TFT LCD – это вариант жидкокристаллического дисплея (LCD), который использует технологию тонкопленочного транзистора (TFT) для улучшения качества изображения, такого как адресность и контрастность. TFT LCD является активным матричным ЖК-дисплеем, в отличие от пассивных матричных ЖК-дисплеев или простых ЖК-дисплеев с прямым управлением с несколькими сегментами.
В проектах на Arduino частота процессора низкая. Таким образом, невозможно отображать сложные изображения высокой четкости и высокоскоростные движения. Поэтому полноцветные TFT-дисплеи могут использоваться только для отображения простых данных и команд.
В этой статье мы использовали библиотеки и передовую технику для отображения данных, графиков, меню и т.д. с профессиональным дизайном. Таким образом любой ваш проект будет выглядеть просто невероятно классно.
Какого размера? Какой контроллер?
Размер экранов влияет на параметры вашего проекта. Большой дисплей не всегда лучше. Если вы хотите отображать символы и изображения высокого разрешения, вы должны выбрать большой размер дисплея с более высоким разрешением. Но это уменьшает скорость вашей обработки, требует больше места, а также требует больше тока для запуска.
Итак, во-первых, вы должны проверить разрешение, скорость движения, детали цвета и размера изображений, текстов и цифр. Мы предлагаем популярные размеры дисплеев Arduino, таких как:
- 3,5″ дюйма 480 × 320,
- 2,8″ дюйма 400 × 240,
- 2,4″ дюйма 320 × 240,
- 1,8″ дюйма 220 × 176.
Выбрав правильный дисплей, пришло время выбрать правильный контроллер. Если вы хотите отображать символы, тексты, цифры и статические изображения и скорость отображения не важна, платы Atmega328 Arduino (такие как Arduino UNO) являются правильным выбором.
Если размер вашего кода является большим, UNO может оказаться недостаточной. Вместо этого вы можете использовать Arduino Mega2560. И если вы хотите показывать изображения с высоким разрешением и движения с высокой скоростью, вы должны использовать ARM-модули Arduino, такие как Arduino DUE.
Драйверы и библиотеки
В электронике / компьютерном оборудовании драйвер дисплея обычно представляет собой полупроводниковую интегральную схему (но может альтернативно содержать конечную машину, состоящую из дискретной логики и других компонентов), который обеспечивает функцию интерфейса между микропроцессором, микроконтроллером, ASIC или периферийным интерфейсом общего назначения и конкретным типом устройства отображения, например LCD, LED, OLED, ePaper, CRT, Nixie и т.п.
Драйвер дисплея обычно принимает команды и данные с использованием стандартного универсального последовательного или параллельного интерфейса общего назначения, такого как TTL, CMOS, RS232, SPI, I2C и т.д. и генерирует сигналы с подходящим напряжением, током, временем и демультиплексированием, чтобы реализовать на дисплее отображение нужного текста или изображения.
Производители ЖК-дисплеев используют разные драйверы в своих продуктах. Некоторые из них более популярны, а некоторые из них неизвестны. Чтобы легко запускать ваш экран, вы должны использовать библиотеки LCD Arduino и добавить их в свой код. В противном случае запуск дисплея может быть очень осложнен.
В Интернете есть много бесплатных библиотек, но важным моментом в библиотеках является их совместимость с драйвером ЖК-дисплея. Драйвер вашего ЖК-дисплея должен быть известен вашей библиотеке. В этой статье мы используем библиотеку Adafruit GFX и библиотеку MCUFRIEND KBV и примеры кода.
Вы сможете скачать их по сопутствующим ссылкам.
Разархивируйте MCUFRIEND KBV и откройте MCUFRIEND_kbv.CPP. Вы увидите список драйверов, которые поддерживаются библиотекой MCUFRIEND.
Откройте папку с примерами (англ. – Example). Существует несколько примеров кода, которые вы можете запустить на Arduino. Подключите ЖК-дисплей и проверьте некоторые примеры.
Список комплектующих
Для реализации многих проектов, связанных с TFT LCD нам понадобится набор некоторых комплектующих, которые мы уже обсудили выше:
- 3.5-дюймовый цветной TFT-дисплей ElectroPeak × 1
- 2,4-дюймовый дисплей TFT LCD ElectroPeak × 1
- Arduino UNO R3 × 1
- Arduino Mega 2560 × 1
- Arduino DUE × 1
Программное обеспечение
Также для работы с Ардуино нам обычно нужна Arduino IDE.
Код
Вы должны добавить библиотеку, а затем загрузить код. Если вы впервые запускаете плату Arduino, не волнуйтесь. Просто выполните следующие действия:
- Перейдите на эту страницу нашего сайта или на сайт www.arduino.cc/en/Main/Software и загрузите программное обеспечение для вашей ОС. Установите программное обеспечение Arduino IDE в соответствии с инструкциями.
- Запустите среду разработки Arduino, очистите текстовый редактор и скопируйте код в текстовый редактор.
- Перейдите к эскизу и включите библиотеки. Нажмите “добавить ZIP-библиотеку” и добавьте библиотеки.
- Выберите плату в “Tools and Boards”, выберите свою плату Arduino.
- Подключите Arduino к компьютеру и установите COM-порт в “Tools and port”.
- Нажмите кнопку «Загрузить» (стрелка).
- Теперь все настроено!
После загрузки кода примера пришло время узнать, как создавать изображения на ЖК-дисплее.
Библиотека
#include “Adafruit_GFX.h” #include “MCUFRIEND_kbv.h”
В первой строке добавлена основная графическая библиотека для дисплеев (написанная Adafruit).
Вторая добавляет библиотеку, которая поддерживает драйверы экранов дисплея MCUFRIEND Arduino.
#include “TouchScreen.h” // только если вы хотите использовать сенсорный экран #include “bitmap_mono.h” // когда вы хотите отображать растровое изображение из библиотеки #include “bitmap_RGB.h” // когда вы хотите отображать растровое изображение из библиотеки #include “Fonts/FreeSans9pt7b.h” // когда вам нужны другие шрифты #include “Fonts/FreeSans12pt7b.h” // когда вам нужны другие шрифты #include “Fonts/FreeSerif12pt7b.h” // когда вам нужны другие шрифты #include “FreeDefaultFonts.h” // когда вам нужны другие шрифты #include “SPI.h” // использование sdcard для отображения растрового изображения #include “SD.h”
Эти библиотеки сейчас не нужны, но вы можете их добавить.
Основные команды
Класс и объект
//(int CS=A3, int RS=A2, int WR=A1, int RD=A0, int RST=A4) MCUFRIEND_kbv tft(A3, A2, A1, A0, A4);
Эта строка делает объект с именем TFT из класса MCUFRIEND_kbv и обеспечивает связь SPI между ЖК-дисплеем и Arduino.
Запуск ЖК-дисплея
uint16_t ID = tft.readID(); tft.begin(ID);
Функция tft.readID считывает ID с дисплея и помещает его в переменную идентификатора. Затем функция tft.begin получает идентификатор и ЖК-дисплей готов к работе.
Разрешение экрана
tft.width(); //int16_t width(void); tft.height(); //int16_t height(void);
По этим двум функциям вы можете узнать разрешение дисплея.
Просто добавьте их в код и поместите выходные данные в переменную uint16_t. Затем прочитайте его из последовательного порта Serial.println();.
Сначала добавьте Serial.begin (9600); в setup().
Цвет экрана
tft.fillScreen(t); //fillScreen(uint16_t t);
Функция fillScreen меняет цвет экрана на цвет t. Это должна быть 16-битная переменная, содержащая код цвета UTFT.
#define BLACK 0x0000 #define NAVY 0x000F #define DARKGREEN 0x03E0 #define DARKCYAN 0x03EF #define MAROON 0x7800 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define LIGHTGREY 0xC618 #define DARKGREY 0x7BEF #define BLUE 0x001F #define GREEN 0x07E0 #define CYAN 0x07FF #define RED 0xF800 #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define ORANGE 0xFD20 #define GREENYELLOW 0xAFE5 #define PINK 0xF81F
Вы можете добавить эти строки в начало своего кода и просто использовать имя цвета в функциях.
Заполнение пикелей
tft.drawPixel(x,y,t); //drawPixel(int16_t x, int16_t y, uint16_t t) tft.readPixel(x,y); //uint16_t readPixel(int16_t x, int16_t y)
Функция drawPixel заполняет пиксель в x и y по цвету t.
Функция readPixel считывает цвет пикселя в местоположении x и y.
Рисование линий
tft.drawFastVLine(x,y,h,t); //drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t t) tft.drawFastHLine(x,y,w,t); //drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t t) tft.
drawLine(xi,yi,xj,yj,t); //drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t t)
Функция drawFastVLine рисует вертикальную линию, которая начинается с местоположения x, y, ее длина – h пикселей, а цвет – t.
Функция drawFastHLine рисует горизонтальную линию, которая начинается с местоположения x и y, длина равна w пикселей, а цвет – t.
Функция drawLine рисует строку, начинающуюся с xi, yi и до xj, yj, цвет – t.
for (uint16_t a=0; a
Источник: https://ArduinoPlus.ru/arduino-tft-lcd-display/
Arduino часы на LCD TFT 3,5″
maxim0512 18-02-2018, 15:11 5 863 Arduino / Часы
Сегодня я хочу поделится инструкцией по изготовления оригинальных часов с датчиком температуры. В качестве контролера Arduino Uno.
Для отображения часов, даты и температуры я буду использовать цветной LCD TFT экран. Экран использует много контактов Arduino, поэтому мы обойдемся без модуля RTC.
Для реализации данного проекта нам понадобится:
– Arduino Uno- LCD TFT 3.5” Shield для подключения к Arduino Uno- Датчик температуры ds18b20- Резистор 4.7 Ком 0.25 Вт- Резистор 62 Ом 2 шт- Аккумулятор Ni-Mn, 1.2V, 1000mA 6 шт- Синий светодиод 5мм 4 шт- Фанера толщиной 10 мм- Немного тонкого пластика или картона- Наждачная бумага- Электролобзик- Термоклей- Паяльник- Припой, канифоль- Изолента- Двусторонний скотч- Соединительные провода- Акриловая краска- Красители для акриловой краски- Дрель- Сверла по дереву 5 мм и 3 мм- Саморезы по дереву 3 х 30 мм
Шаг 1 Подготовка экрана.
Для начала возьмем экран, перед установкой его необходимо немного подготовить. В моем случае он выглядит так:У вас он может немного отличаться, их много разновидностей. Подсветка экрана запитана через стабилизатор на 3.3 вольта и резистор от 5 вольт с Arduino.
Это хорошо видно на фото:Такая схема делает не возможным управление подсветкой, а оно пригодится, делать меньше яркость на ночь, например.
Для осуществления возможности контроля яркости разрезаем дорожку около резистора и припаиваем провод соединяющий выход стабилизатора напряжения и резистор. Приклеиваем сверху изоленту, чтобы не было случайных КЗ.
Потом мы разрежем этот провод и подключим к Arduino или просто поставим выключатель в разрыв. В итоге должно получится так:Теперь экран готов к установке
Шаг 2 Подготовка Arduino Uno.
Экран использует много контактов Arduino, кроме этого на плате с экраном часто размещают слот под SD карту. Еще одна проблема заключается в том, что при соединении экрана и Arduino оставшиеся выводы Arduino становятся не доступны.
Поэтому надо выбирать аналог Arduino Uno с подготовленными дополнительными посадочными гнездами для выводов. Таким образом мы сможем припаять гребенку к свободным выводам в обратную сторону. Итак, мы откажемся от слота SD карты в пользу свободных выводов.
Распаиваем в обратную сторону следующие выводы: D0, D1, D10, D11, D12, D13, A5. Также с обратной стороны нам понадобятся выводы +5 вольт, GND, RES.
Для питания будем использовать Ni-Mn аккумуляторы, и будет необходимо их заряжать, для этих целей припаиваем провода к разъему питания Arduino, таким образом мы сможет и заряжать аккумуляторы и питать Arduino во время зарядки. В конечном итоге получаем следующее:
Можно перейти к корпусу.
Шаг 3 Изготовление корпуса.
Начнем с изготовления корпуса для наших часов. За основу возьмем фанеру толщиной 10 мм. Форма может быть разной и, если вам не понравилась выбранная мною форма, вы можете изготовить шаблон и вырезать своей формой.
Но если вы решили сделать такой же, как и у меня, тогда распечатываем следующую картинку на любом принтере в масштабе 100%:Вырезаем распечатанный шаблон по внешнему краю. Прикладываем шаблон к фанере, очерчиваем и вырезаем, на этот раз из фанеры, две такие детали. В первой детали необходимо вырезать прямоугольник размером нашего экрана.
Для этого размещаем экран посередине нашей заготовки, обратите внимание, ориентировать по середине надо сам экран, плата на которой находится наш экран не симметрична. Поэтому посередине размещаем сам экран, а очерчивает по размерам платы и вырезаем в заготовке этот прямоугольник:Далее необходимо соединить экран и Arduino Uno.
Прикладываем к нашей заготовке и отмечаем на фанере места вырезов под USB порт и разъем питания Arduino. Используя нож прорезаем по отмеченным линиям, но не до конца, а на только на нужную глубину:Кладем заготовку из фанеры на ровную поверхность, внутрь кладем экран. Ровная поверхность нужна чтобы экран и передняя часть заготовки находилась в одной плоскости.
Обратите внимание чтобы вырезы под USB и разъем питания Arduino совпадали с их фактическим расположением. Используя термоклеевой пистолет приклеиваем экран к фанере, заодно можно приклеить и провода подсветки, чтобы их случайно не выдрать:С лицевой стороны будет выглядеть так:Покрываем нашу заготовку акриловой краской.
Я выбрал акриловою краску так как она не пахнет и быстро сохнет. Используя колер придаем белой краске нужный нам цвет. Мне нравится фиолетовый. Вы можете покрасить в любой понравившийся вам цвет:Теперь переходим ко второй заготовке, в ней необходимо вырезать прямоугольник размером 75 мм на 35 мм, для доступа к выводам Arduino.
А также надо сделать пять отверстия диаметром 5 мм для светодиодов. И прорезь для выключателя. И отверстия 3 мм под саморезы. Также, как и первую заготовку красим вторую:Для соединения этих частей из фанеры той же толщины изготовим два прямоугольники размером 20 мм на 40 мм и один квадрат со стороной 20 мм. И просверливаем в них отверстия 3 мм под саморезы:
Шаг 4 Электрика.
Ставим Arduino на место:Прикручиваем наши соединительные прямоугольники как показано на фото:Берем аккумуляторы, спаиваем их последовательно по три штуки, выводим провода и скручиваем изолентой. Размещаем их в нижних частях лицевой заготовки, с обратной стороны и приклеиваем на термоклей.
Провод от минусового контакта разъема питания Arduino припаиваем к минусу первой тройки аккумуляторов. Плюс от первой тройки припаиваем к минусу второй тройки аккумуляторов. Плюс от второй тройки паяем к одному из контактов выключателю. Провод от плюсового контакта разъема питания Arduino паяем ко второму контакту выключателя.
Проше говоря: все аккумуляторы должны быть соединены последователь, минус от них припаян к минусу разъема питания Arduino, а плюс через выключатель к плюсу разъема питания:Переходим к задней части. В проделанные отверстия вставляем светодиоды и фиксируем их термоклеем. Спаиваем их параллельно по два светодиода и не забываем про резисторы на плясовой провод.
Минус от светодиодов подключаем к GND, плюс к D11 Arduino.В верхнее отверстие вставляем датчик температуры ds18b20. Он обладает высокой точностью измерения, погрешность не более 0,5 °C. Датчик откалиброван при изготовлении, какой-либо дополнительной настройки не требуется. Диапазон измерения температуры -55 … + 125 °C.
Есть два режима работы: с внешним источником питания и «паразитного питания». Мы будем использовать внешнее питание, так как при этом он работает стабильнее. Подключение следующее:Так же фиксируем его термоклеем. В конечном итоге должно получится следующее:Контакт DQ датчика температуры подключаем к D10 Arduino.
Не забудьте припаять подтягивающий резистор между DQ и +5(VDD). Перед окончательной сборкой еще раз проверьте чтобы все было припаяно и подключено:
Шаг 5 Собираем все вместе.
Аккуратно, чтобы не порвать провода, переворачивает заднюю часть и кладем ее на лицевую часть. В местах крепления соединительных прямоугольников проделываем отверстия и вкручиваем саморезы, соединяя таким образом обе части:Теперь из тонкого пластика вырезаем полости толщиной 35 мм.
На двусторонний скотч клеим эти полости по кругу на боковины наших часов:
Также из тонкого пластика вырезаем внутренние элементы бумажного шаблона и наклеиваем их на лицевую сторону часов:Для зарядки аккумуляторов и работы часов во время зарядки необходим блок питания напряжением 7.
2 – 8 V, с ограничение тока в 600 mA. Если у вас будут другие аккумуляторы, то и блок питания нужно подбирать другой, главное чтобы ток зарядки не превышал 10% от емкости аккумуляторов. На этом сборка закончена, осталось только отредактировать и записать скетч.
Шаг 6 Подготовка среды и заливка скетча.
Для редактирования и заливки скетча вначале надо установить Arduino IDE с официального сайта:www.Arduino.cc. Затем установить следующие библиотеки. Для работы с экраном библиотека UTFT:
utft.rar [2.39 Mb] (скачиваний: 286)
Для подключения датчика температуры библиотека OneWire:
onewire.rar [16.75 Kb] (скачиваний: 160)
Для установки этих библиотек распакуйте архивы и поместите распакованные файлы в папку «libraries», находящуюся в папке с установленной Arduino IDE.
Или не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выберите пункт «Добавить .Zip библиотеку».
Не забудьте после всего этого перезагрузить Arduino IDE. Скетч для часов:
ard_lcd_tft_term.rar [3.9 Kb] (скачиваний: 346)
Датчик температуры работает по протоколу One Wire и имеет уникальный адрес для каждого устройства – 64-разрядный код. Чтобы каждый раз не искать этот адрес, подключаем датчик к Arduino, заливаем в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты – Монитор порта.
Arduino должна найти наш датчик, написать его адрес и текущие показания температуры. Копируем или просто записываем адрес вашего датчика.
Открываем скетч Ard_LCD_TFT_Term, ищем строку:byte addr[8]={0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97};//адрес моего датчикаЗаписываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика. Осталось только залит отредактированный скетч.
Хочу еще сказать, что просто часы возможно скучновато, но вы можете написать свой собственный скетч. Я по мере написания других скетчев для этих часов буду их выкладывать.Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Идея
Описание
Исполнение
Итоговая оценка: 10
Источник: https://USamodelkina.ru/10536-arduino-chasy-na-lcd-tft-35.html
Подключение TFT-дисплея 1.8 к Arduino – RobotChip
Автор: vip.sergey.mir · 29.09.2017
В этой статье, расскажу как подключить TFT дисплеи с диагональю 1.8 дюйма к плате Arduino. А так же, расскажу как выводить текст, рисовать разные фигуры и отображать изображения.
Технические параметры
► Напряжение питания: 3.3 В – 5 В ► Диагональ: 1.8 дюйма ► Разрешение: 128×160 пикселей ► Цветность: 65 тысяч цветов в формате RGB ► Интерфейс: SPI
► Габариты: 35 мм х 57 мм х 7 мм
Общие сведения
TFT дисплей цветной с диагональю 1.8 дюйма и расширением 128 на 160 точек, за обработку данный отвечает контроллер ST7735R, который может отобразить до 18-бит цвета (262144 оттенков), работает данный контроллер (дисплей) от 3.3В и для работы от плат arduino предусмотрен стабилизатор напряжения на 3.3В, но если необходимо работать от 3.
3В просто замыкаем перемычку (как показывает опыт, модуль может работать и от 5В логики). Так-же, на модуле установлен держатель карты SD для хранения и загрузки изображения на TFT дисплей.
Подключение осуществляется по ISP интерфейсу (4-х проводному), все выводы выведены на боковую группу контактов, на другой стороне платы, выведены вывода SD карты.
Группа контактов 1
► LED — управление подсветкой, напряжение не более 3.
3 В
► SCK — линия синхронизации
► SDA — линия данных (Serial Data)
► A0
► RESET — сброс
► CS — выбор устройства
► GND — «-» питание модуля
► VCC — «+» питание модуля
Группа контактов 2
► SD_CS — выбор устройства
► SD_MOSI — прием данных
► SD_MISO — передача данных
► SD_SCK — линия синхронизации
Подключение TFT дисплея к Arduino
Необходимые детали: ► Цветной TFT-дисплей 1.8, 128×160, SPI x 1 шт. ► Arduino UNO R3 (DCCduino, CH340G) x 1 шт.
► Провод DuPont 10x, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.
Подключение:
В данном примере используем дисплей TFT и плату Arduino UNO R3, передача данный осуществляется по интерфейсу SPI. Так как контроллер дисплея ST7735R работает на 3.
3В (включая логику), необходимо добавить пять резистор в цепь SPI на 1 кОм и один на 150 Ом для защиты светодиодов в подсветки. Но все подключают без резисторов и контроллер не сгорает.
Собираем схему по рисунку ниже, так же для удобства выложил таблицу подключения.
Таблица подключения TFT дисплея
Как говорил выше, дисплей работает по интерфейсу SPI, поэтому необходимо включить в проект библиотеку SPI, а так же библиотеку TFT, все они входят в стандартные библиотеки среды разработки IDE Arduino.
Тестировалось на Arduino IDE 1.8.0Дата тестирования 29.08.2017г.#include // Подключаем библиотеку TFT #include // Подключаем библиотеку SPI#define cs 10 // Указываем пины cs#define dc 9 // Указываем пины dc (A0)#define rst 8 // Указываем пины resetTFT TFTscreen = TFT(cs, dc, rst); TFTscreen.background(0, 0, 0); // Очистим экран дисплея TFTscreen.setTextSize(2); // Устанавливаем размер шрифта* Установка цвета фона TFTscreen.background ( r , g , b )* где, r, g и b являются значениями RGB для заданного цвета TFTscreen.background ( 0 , 0 , 0 );* Команда установки цвета фона TFTscreen.stroke ( r , g , b )* где, r, g и b являются значениями RGB для заданного цвета TFTscreen.stroke(255, 0, 0);* Вывод текста на дисплей TFTscreen.text(“Hello, World!”, x, y); TFTscreen.text(“Hello, World!”, 6, 47); TFTscreen.text(“RobotChip”, 30, 67); |
Скачать скетч
Так же, в библиотеке доступны полезные функции, которые позволяют отобразить фигуры
► TFTscreen. point (x, y) — отображает точку в координате (x, y)
► TFTscreen.
line (xStart, yStart, xEnd, yEnd) — рисует строку , начинающуюся с (xStart, yStart) и заканчивается на (xEnd, yEnd)
► TFTscreen.
rect (xStart, yStart, width, height) — рисует прямоугольник с верхним левым углом (xStart, yStart) с заданной шириной и высотой
► TFTscreen .circle (x, y, radius) — рисует круг с центром в точке (x, y) с заданным радиусом
Купить на Aliexpress
Контроллер Arduino UNO R3
Цветной TFT-дисплей 1.8, 128×160, SPI
Комплект проводов DuPont, 2,54 мм, 20 см
Купить в Самаре и области
Купить контроллер Arduino UNO R3
Купить Цветной TFT-дисплей 1.8, 128×160, SPI
Купить комплект проводов DuPont, 2,54 мм, 20 см
Источник: http://robotchip.ru/podklyuchenie-tft-displeya-1-8-k-arduino/
Arduino: TFT дисплей 2,4 320х240 — DRIVE2
Доброй ночи!
Полный размер
На днях приехал сенсорный TFT-экран
Подключаем:Экран — АрдуиноLCD_CS — A3 — управление ЖКИ, выбор устройстваLCD_RS — A2 — управление ЖКИ, команда/данные или данные сенсорной поверхности XMLCD_WR — A1 — управление ЖКИ, запись или данные сенсорной поверхности YPLCD_RD — A0 — управление ЖКИ, чтениеLCD_ RST — A4, можно присоединить LCD_RESET к линии RESET Arduino UNOLCD_D0 — DIO 8 — данные ЖКИLCD_D1 — DIO 9 — данные ЖКИLCD_D2 — DIO 2 — данные ЖКИLCD_D3 — DIO 3 — данные ЖКИLCD_D4 — DIO 4 — данные ЖКИLCD_D5 — DIO 5 — данные ЖКИLCD_D6 — DIO 6 — данные ЖКИ / данные сенсорной поверхности XPLCD_D7 — DIO 7 — данные ЖКИ / данные сенсорной поверхности YMSD CS — DIO 10 — выбор SDSD DI — DIO 11 — вход данныхSD DO — DIO 12 — выход данныхSD SСK — DIO 13 — тактирование данных3.3V — 3.3V5V — 5V
GND — GND
Полный размер
Подключение. Свободными остаются только A5, A6, A7
Библиотек для TFT-дисплеев много, все зависит от контроллера дисплея.
Чтобы определиться заливаем в Атмегу скетч LCD_ID_Reader.ino
Полный размер
Если подключение не напутано: получаем ID контроллера и ссылку на библиотеку
Для меня подходит библиотека SWTFT.hОна с косяками ))) Не компилируется )) Надо в файле SWTFT.cpp вписать строку в начале:
#define swap(a, b) { int16_t t = a; a = b; b = t; }
Дальше привожу скетч с описанием функций:
// Включаем библиотеки#include // Core graphics library
#include “SWTFT.h” // Hardware-specific library
// Описываем переменные цветов#define BLACK 0x0000#define BLUE 0x001F#define RED 0xF800#define GREEN 0x07E0#define CYAN 0x07FF#define MAGENTA 0xF81F#define YELLOW 0xFFE0
#define WHITE 0xFFFF
// Открываем объектSWTFT tft;
uint8_t rotation=0; // прописываем ориентацию экрана 0…3
void setup() {tft.reset(); // инициализацияuint16_t identifier = tft.readID(); //считываем индентификатор тип uint16_ttft.begin(identifier); // начинаем работатьtft.setRotation(rotation); // определяем ориентацию экранаtft.fillScreen(GREEN); // заливка экранаtft.setCursor(50, 20); //установка курсора в пикселяхtft.
setTextColor(BLUE); //установка цвета шрифтаtft.setTextSize(2); //установка размера шрифтаtft.println(“Ilya Bulatov”); //печать текста с переводом строки_следующая строка с нулевого пикселяdelay(50);int w, h;w = tft.width(); //считываем размер по горизонтали_зависит от ориентации экранаh = tft.
height(); //считываем размер по вертикали_зависит от ориентации экранаtft.print(“Razmer TFT:”); //печать текста без перевода строкиtft.print(w);tft.println(h);delay(50);tft.drawLine(10, 100, 200, 110, RED); //рисуем линию красного цветаtft.drawLine(200, 110, 98, 280, YELLOW);tft.drawLine(98, 280, 10, 100, CYAN);delay(50);tft.
drawFastHLine(20, 120, 200, MAGENTA); //рисует линию по горизонталиtft.drawFastVLine(120, 120, 170, WHITE); //рисует линию по вертикалиdelay(50);tft.drawRect(30, 90, 150, 120, BLACK); //рисует прямоугольник без заливки 30_90 начальные координаты 150_ширина 120_высотаtft.fillRect(100, 160, 80, 40, YELLOW); //заливает прямоугольную областьdelay(50);tft.
drawCircle(120, 160, 80, RED); //рисует окружность 80_радиусtft.fillCircle(120, 160, 30, CYAN); //заливает окружностьdelay(50);tft.drawTriangle(20, 110, 200, 120, 110, 210, BLACK); //рисует треугольник без заливкиtft.fillTriangle(30, 120, 180, 140, 90, 180, BLUE); //заливает треугольникdelay(50);tft.
drawRoundRect(35, 95, 140, 110, 4, MAGENTA); //рисует прямоугольник без заливки 4_скругление в пикселахtft.fillRoundRect(65, 125, 80, 50, 8, CYAN); //заливает прямоугольную область со скруглениемdelay(50);rotation=tft.getRotation()+1; //возвращает ориентацию экранаtft.drawPixel(120,160, RED); //рисует точкуtft.
drawPixel3(100,100,0×23,0x45,0xAC); //рисует точку цвета RGBtft.drawLine3Byte(10,110,200,120,0×23,0x45,0xAC); //рисует линию RGBuint16_t clr=tft.readPixel(120,160); //чтение цвета пикселаclr=tft.color565(0x23,0x45,0xAC); //преобразование цвета RGB
}
void loop() {
tft.setRotation(rotation); // определяем ориентацию экранаtft.fillScreen(GREEN); // заливка экранаtft.setCursor(50, 20); //установка курсора в пикселяхtft.setTextColor(BLUE); //установка цвета шрифтаtft.setTextSize(2); //установка размера шрифтаtft.println(“Ilya Bulatov”); //печать текста с переводом строки_следующая строка с нулевого пикселяdelay(50);int w, h;w = tft.
width(); //считываем размер по горизонтали_зависит от ориентации экранаh = tft.
height(); //считываем размер по вертикали_зависит от ориентации экранаtft.print(“Razmer TFT:”); //печать текста без перевода строкиtft.print(w);tft.println(h);delay(50);tft.drawLine(10, 100, 200, 110, RED); //рисуем линию красного цветаtft.drawLine(200, 110, 98, 280, YELLOW);tft.drawLine(98, 280, 10, 100, CYAN);delay(50);tft.
drawFastHLine(20, 120, 200, MAGENTA); //рисует линию по горизонталиtft.drawFastVLine(120, 120, 170, WHITE); //рисует линию по вертикалиdelay(50);tft.drawRect(30, 90, 150, 120, BLACK); //рисует прямоугольник без заливки 30_90 начальные координаты 150_ширина 120_высотаtft.fillRect(100, 160, 80, 40, YELLOW); //заливает прямоугольную областьdelay(50);tft.
drawCircle(120, 160, 80, RED); //рисует окружность 80_радиусtft.fillCircle(120, 160, 30, CYAN); //заливает окружностьdelay(50);tft.drawTriangle(20, 110, 200, 120, 110, 210, BLACK); //рисует треугольник без заливкиtft.fillTriangle(30, 120, 180, 140, 90, 180, BLUE); //заливает треугольникdelay(50);tft.
drawRoundRect(35, 95, 140, 110, 4, MAGENTA); //рисует прямоугольник без заливки 4_скругление в пикселахtft.fillRoundRect(65, 125, 80, 50, 8, CYAN); //заливает прямоугольную область со скруглениемdelay(50);rotation=tft.getRotation()+1; //возвращает ориентацию экранаtft.drawPixel(120,160, RED); //рисует точкуtft.
drawPixel3(100,100,0×23,0x45,0xAC); //рисует точку цвета RGBtft.drawLine3Byte(10,110,200,120,0×23,0x45,0xAC); //рисует линию RGBuint16_t clr=tft.readPixel(120,160); //чтение цвета пикселаclr=tft.color565(0x23,0x45,0xAC); //преобразование цвета RGB
}
Полный размер
Результат, все функции работают
PS: Большей частью для себя писал.
Заходите в группу “Матрица”. Программирование микроконтроллеров, ардуино, ПЛИС, 3Д и ЧПУ.
Реализация всего на практике и диагностика авто “ПроДвижение — техслужба”
Источник: https://www.drive2.ru/b/494772536991547753/
Работа с 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<\p>
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<\p>
Описание команд взято, главным образом, из англоязычного мануала, поставляемого вместе с библиотекой, и значительно дополнено практическими наблюдениями и примерами. Итак…
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/