Подключение 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 Uno (купить на AliExpress).
- 2.4” TFT LCD display Shield (шилд TFT ЖК дисплея) (купить на AliExpress).
- 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.
Видео, демонстрирующее работу проекта
Загрузка… 5 566 просмотровПодключение OLED l2C дисплея к Arduino UNO
#include <Wire.h>
#include <Arduino.h>
long speed[] = {
50, 100, 200, 250, 400, 500, 800 };
const int speeds = sizeof(speed)/sizeof(speed[0]);
#define RESTORE_LATENCY 5
bool delayFlag = false;
bool printAll = true;
bool header = true;
enum states {
STOP, ONCE, CONT, HELP };
states state = STOP;
uint32_t startScan;
uint32_t stopScan;
void setup()
{
Serial.begin(115200);
Wire.begin();
displayHelp();
}
void loop()
{
switch (getCommand())
{
case ‘s’:
state = ONCE;
break;
case ‘c’:
state = CONT;
break;
case ‘d’:
delayFlag = !delayFlag;
Serial. print(F(«<delay=»));
Serial.println(delayFlag?F(«5>»):F(«0>»));
break;
case ‘e’:
break;
case ‘h’:
header = !header;
Serial.print(F(«<header=»));
Serial.println(header?F(«yes>»):F(«no>»));
break;
case ‘?’:
state = HELP;
break;
case ‘p’:
printAll = !printAll;
Serial.print(F(«<print=»));
Serial.println(printAll?F(«all>»):F(«found>»));
break;
case ‘q’:
state = HELP;
break;
default:
break;
}
switch(state)
{
case ONCE:
I2Cscan();
state = HELP;
break;
case CONT:
I2Cscan();
delay(1000);
break;
case HELP:
displayHelp();
state = STOP;
break;
case STOP:
break;
default:
break;
}
}
char getCommand()
{
char c = ‘\0’;
if (Serial. available())
{
c = Serial.read();
}
return c;
}
void displayHelp()
{
Serial.println(F(«\nArduino I2C Scanner — 0.1.03\n»));
Serial.println(F(«\ts = single scan»));
Serial.println(F(«\tc = continuous scan — 1 second delay»));
Serial.println(F(«\tq = quit continuous scan»));
Serial.println(F(«\td = toggle latency delay between successful tests.»));
Serial.println(F(«\tp = toggle printAll — printFound.»));
Serial.println(F(«\th = toggle header — noHeader.»));
Serial.println(F(«\t? = help — this page»));
Serial.println();
}
void I2Cscan()
{
startScan = millis();
uint8_t count = 0;
if (header)
{
Serial.print(F(«TIME\tDEC\tHEX\t»));
for (uint8_t s = 0; s < speeds; s++)
{
Serial.print(F(«\t»));
Serial.print(speed[s]);
}
Serial. println(F(«\t[KHz]»));
for (uint8_t s = 0; s < speeds + 5; s++)
{
Serial.print(F(«———«));
}
Serial.println();
}
for (uint8_t address = 8; address < 120; address++)
{
bool printLine = printAll;
bool found[speeds];
bool fnd = false;
for (uint8_t s = 0; s < speeds ; s++)
{
TWBR = (F_CPU/(speed[s]*1000) — 16)/2;
Wire.beginTransmission (address);
found[s] = (Wire.endTransmission () == 0);
fnd |= found[s];
// give device 5 millis
if (fnd && delayFlag) delay(RESTORE_LATENCY);
}
if (fnd) count++;
printLine |= fnd;
if (printLine)
{
Serial.print(millis());
Serial.print(F(«\t»));
Serial.print(address, DEC);
Serial.print(F(«\t0x»));
Serial.print(address, HEX);
Serial. print(F(«\t»));
for (uint8_t s = 0; s < speeds ; s++)
{
Serial.print(F(«\t»));
Serial.print(found[s]? F(«V»):F(«.»));
}
Serial.println();
}
}
stopScan = millis();
if (header)
{
Serial.println();
Serial.print(count);
Serial.print(F(» devices found in «));
Serial.print(stopScan — startScan);
Serial.println(F(» milliseconds.»));
}
}
Урок 23. Подключение сегментного дисплея TM1637 к Arduino.
Сегодня в уроке подключим семисегментный индикатор TM1637 к Arduino. Установим библиотеку TM1637.h и научимся выводить на дисплей цифры и некоторые символы.
Как устроен и из чего состоит модуль TM1637.
Характеристики Индикатора на TM1637:
• Напряжение питание: 5,5В
• Потребляемый ток 0.
• Градаций яркости индикаторов — 8
• Размеры платы: 42×24мм
• Двух проводной последовательный интерфейс (CLK, DIO).
Фото модуля от магазина RobotDyn фронтальный вид.
Фото модуля от магазина RobotDyn вид с тыльной стороны.
Этот модуль собран на драйвере TM1637.
• Есть модули красного, синего, зелёного, белого цвета.
• Размеры 0,36” и 0,56”
В уроке будем использовать модуль TM1637 0,56”, зеленого цвета.
Возможности модуля TM1637:
• Зажигать сразу все знаки или по одному сегменту или символу,
• Выводить цифры от 0 до 9 и некоторые буквы. Смотри ниже.
• Цифры могут выводиться как с нулями слева, так и без них,
• 8 градаций изменения яркости.
• Вывод символа в определённую позицию (ячейку).
Отличие модуля индикатора на TM1637 от других – это его компактность, он не дорогой, и управление всего по двум проводам.
Подключение дисплея TM1637 к Arduino
Подключить дисплей можно к любым цифровым пинам Ардуино. В нашем случае будем подключать к Arduino NANO по схеме.
Arduino Nano [PIN 5V] — TM1637 Module[PIN 5V]
Arduino Nano [PIN GND] — TM1637 Module[PIN GND]
Arduino Nano [PIN 2] — TM1637 Module[PIN DIO]
Arduino Nano [PIN 3] — TM1637 Module[PIN CLK]
Установка и настройка библиотеки TM1637.h.
Установить библиотеку TM1637.h можно из менеджера библиотек. Для этого откроем Arduino IDE, перейдем в раздел Скетч-> Подключить библиотеку -> Управление библиотеками.
Затем в строке поиска наберем TM1637. И установим библиотеку Grove 4-Digit Display.
Вы также можете скачать библиотеку TM1637 внизу урока, в разделе «материалы для скачивания».
Настройка библиотеки TM1637 для вывода дополнительных символов.
Библиотека позволяет вывести цифры и некоторые символы на дисплей.Для реализации простых проектов, таких как часы, индикаторы и счетчики, этого набора символов достаточно. Я реализовывал часы с выводом температуры и влажности: Arduino часы. Видео 2. Подключаем к Arduino TM1637 и датчик DHT11.
Для отображения температуры использовал символ «С» номер для вывода на индикатор 12и для отображения влажности использовал символ «F» номер для вывода на дисплей 15.
Но для некоторых проектов на Arduino не достаточно данного набора символов. Расширить его достаточно легко, для этого в файле TM1637. cpp библиотеки находим массив TubeTab[] и добавляем нужные коды символов.
Список добавленных символов в файле TM1637.cpp, библиотеки TM1637.
После чего данные символы можно
использовать в своих проектах.
Если захочется закодировать свой символ, то можно использовать следующую таблицу:
После кодирования сегментов, установив нужные биты в байте, для сокращения записи можно перевести байт из двоичного в шестнадцатиричный формат, как — b00011110 -> 0x1E.
Пример кода для вывода информации на семисегментный индикатор с драйвером TM1637.
Пример 1. Вывод времени с мигающим двоеточием.
В данном примере выведем 4 цифры на индикатор TM1637, и научимся мигать двоеточием каждую секунду. Данный пример поможет вывести любую цифровую информацию: время, счётчики, показания с датчиков.
Пример 2. Вывод слов на модуль TM1637.
Дополнительные символы добавили в библиотеку, сейчас осталось научиться их выводить. Создадим массивы необходимых слов, после чего по очереди выведем их на дисплей. Данные слова можно использовать при выводе статуса работы устройств. Это пример слов. Вы можете составлять свои слова в соответствии с вашей задачей.
Пример 3. Выводданных с датчиком с символами.
Мы научились выводить цифры и слова на дисплей. Как же сделать динамическое изменение значений на дисплее. При этом добавлять символы для индикации различных данных.
Тут поможет нам посимвольный вывод данных на дисплей. Например, запись tm1637.display(0, 5) выводит первый символ на дисплей 5. Аналогично выводятся остальные 3 символа.
Для разделения числа на десятки и единицы, для нахождения единиц нужно найти остаток от деления на 10, и для получения десяток нужно число делить на 10.
И после числового значения выведем символ, например, для температуры символ «С».
Пример применим при выводе даты, времени и показаний с датчиков.
Появились вопросы или предложения не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
Пример 1. Вывод времени с мигающим двоеточием.ino | 1 Kb | 1319 | Скачать
Вы можете скачать файл. |
|
Пример 2. Вывод слов на модуль TM1637.ino | 1 Kb | 706 | Скачать
Вы можете скачать файл. |
|
Пример 3. Вывод данных с датчиком с символами.ino | 1 Kb | 692 | Скачать
Вы можете скачать файл. |
|
скачать библиотеку TM1637 (Доп символы).zip | 11 Kb | 1351 | Скачать
Вы можете скачать файл. |
|
datasheet-TM1637.pdf | 685 Kb | 541 | Скачать
Вы можете скачать файл. |
|
TM1637.cpp (доп.символы).zip | 2 Kb | 1066 | Скачать
Вы можете скачать файл. |
OLED дисплей 0.91″ 128×32, I2C, SSD1306 синий
Подключение OLED дисплея к ARDUINO UNO R3 и вывод Русского шрифта: