Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Фотографии и RGB-видео на TFT SPI-дисплее

Компоненты и расходные материалы

Arduino Nano R3
× 1
2,8 "TFT-дисплей SPI 320x240
× 1
USB-карта (> 1 ГБ)
× 1
TFT-экран (прорыв) для Arduino Nano
× 1

Об этом проекте

Введение

Здравствуйте!

В сегодняшней статье я хотел бы рассказать о том, как можно просматривать картинки или фотографии (формат * .jpg), а также видео (формат RGB565) на экране TFT SPI-дисплея (320x240, 2,8 ").

Сначала небольшой демонстрационный ролик:

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

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

  • Arduino Nano R3,
  • SPI TFT-дисплей (320x240) с сенсорным экраном,
  • USB-карта> 1 ГБ,
  • Экран TFT для Arduino Nano.

Собираем все детали в порядке, показанном на видео (или вы можете прочитать предыдущую статью:https://create.arduino.cc/projecthub/alf81010/tft-shield-for-arduino-nano-start-f4391e.

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

Подготовка карты Micro SD.

Карта micro SD должна быть отформатирована в FAT32. Изображения можно записывать прямо на карту (без какой-либо обработки). Желательно, чтобы размер изображений был не более 2560x1920.

Для воспроизведения видео в формате rgb565 файлы необходимо подготовить заранее. Для конвертации видео используйте ffmpeg (http://ffmpeg.org). Скачайте и установите на свой компьютер. Затем используйте пример командной строки ffmpeg, которая отображает видео, совместимое с этой демонстрацией:

ffmpeg -i video.avi -s 320x240 -pix_fmt rgb565 video.rgb

Загрузите и установите библиотеку, необходимую для работы с экраном TFT для Arduino Nano:https://github.com/YATFT/YATFT.

Загрузите следующий скетч в Arduino Nano:

  / ****************************************** *********************************** ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ И ДОКУМЕНТАЦИЯ ПРЕДОСТАВЛЯЮТСЯ «КАК ЕСТЬ» БЕЗ ГАРАНТИЙ * ВИДОМ, ЯВНЫМ ИЛИ ПОДРАЗУМЕВАЕМЫМ, ВКЛЮЧАЯ БЕЗ ОГРАНИЧЕНИЙ ЛЮБУЮ ГАРАНТИЮ * ТОВАРНОЙ ПРИГОДНОСТИ, НАИМЕНОВАНИЯ, НЕДОСТАТОЧНОСТИ НАРУШЕНИЙ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ * ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР ИЛИ ЕГО ЛИЦЕНЗИАРЫ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ИЛИ * ОБЯЗАНЫ ПО КОНТРАКТУ, НЕБРЕЖНОСТИ, СТРОГОЙ ОТВЕТСТВЕННОСТИ, ВКЛАДУ, * НАРУШЕНИЮ ГАРАНТИЙ ИЛИ ДРУГИМ ЮРИДИЧЕСКИМ ПРИВЕДЕННЫМ ТЕОРИЯМ, КАКИМ-ЛИБО ПРЯМЫМ ИЛИ КОСВЕННЫМ * УБЫТКАМ ИЛИ КОСВЕННЫМ УБЫТКАМИ , * КОСВЕННЫЙ, КАРАТЕЛЬНЫЙ ИЛИ КОСВЕННЫЙ УБЫТК, ПОТЕРЯ ПРИБЫЛИ ИЛИ УТЕРЯ ДАННЫХ, * СТОИМОСТЬ ЗАКУПКИ ТОВАРОВ, ТЕХНОЛОГИЙ, УСЛУГ ИЛИ ЛЮБЫХ * ПРЕТЕНЗИЙ ТРЕТЬИХ СТОРОН (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ​​ЛЮБОЙ ДРУГОЙ ЗАЩИТЫ ИЛИ ИЛИ ИХ ЗАЩИТЫ) . ************************************************ ***************************** / # include  // Аппаратно-зависимая библиотека # include  #include  #include  YATFT tft (0); SDC sdc; #define CS_PIN A0 // MOSI =11, MISO =12, SCK =13XPT2046_Touchscreen ts (CS_PIN); / * При использовании щита все строки управления и данных фиксированы, и при желании можно использовать более простое объявление:* / uint16_t frame =0; uint32_t total_time =0; bool f_first =true; uint8_ t mode =0; / ******************************************* ************************************************* *** / void setup (void) {Serial.begin (115200); // инициализируем последовательный порт Serial.println (F ("Пример воспроизведения фото и видео!")); tft.begin (0x4391, -8); // инициализируем отображение tft.SetColor (BLACK); tft.ClearDevice (); // Очистить экран ts.begin (); // Запускаем Touchscreen SPI.end (); Serial.print (F ("FS Init ...")); uint8_t state =sdc.FSInit (); если (состояние ==0) Serial.println (F ("неудача.")); иначе Serial.println (F ("успех.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis () + 500;} цикл void (void) {if (total_time  100 &&y <140) {// Режим остановки =1; Serial.println (F ("режим =1")); } else if (x> 140 &&x <180 &&y> 100 &&y <140) {// Режим паузы =2; // Рисуем кнопки tft.SetColor (BRIGHTRED); tft.DrawFillCirc (GetMaxX () / 4, GetMaxY () / 2,50); tft.SetColor (ЯРКО-ЖЕЛТЫЙ); tft.DrawFillRect (GetMaxX () / 4-30, GetMaxY () / 2-30, GetMaxX () / 4 + 30, GetMaxY () / 2 + 30); tft.SetColor (ЯРКОСТЬ); tft.DrawFillCirc (GetMaxX () / 4 * 3, GetMaxY () / 2,50); tft.SetColor (ЯРКО-ЖЕЛТЫЙ); для (uint8_t я =0; я <60; я ++) {tft.DrawLine (210 + я, 90 + я / 2, 210 + я, 150-я / 2); } Serial.println (F ("mode =2")); } else if (x> 190 &&y> 100 &&y <140) {// Режим воспроизведения =0; Serial.println (F ("режим =0")); } режим возврата; } SPI.end (); режим возврата;}  

Я постарался сделать небольшую статью и описать в ней основные моменты. Тем более что ничего сложного в этом проекте нет. Но если есть вопросы - задавайте, не сомневайтесь.;-) Постараюсь добавить статью.

Спасибо за внимание!

Продолжение следует.

Предыдущие статьи:

1) Уникальный TFT Shield для Arduino Uno - Start,

2) Уникальный экран TFT для Arduino Uno - OV7670 Cam Live View,

3) Уникальный экран TFT для Arduino Uno - Bluetooth-камера Arduino (ABC),

4) TFT Shield для Arduino Nano - Старт.

Обновление 01.04.2021:

И снова здравствуйте! Существует обновленная библиотека для серии экранов, которая в настоящее время состоит из двух экранов и двух коммутационных плат. Скетч составляется в зависимости от выбранной версии (от 1 до 4) и типа микроконтроллера (MegaAVR или ESP-32). Добавил фото, примеры. Более подробную информацию можно найти на https://github.com/Ekaburg/EkaTFT.

Код

  • PhotoAndVideoPlay.ino
PhotoAndVideoPlay.ino C / C ++
 / ********************************************* ******************************** * ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ И ДОКУМЕНТАЦИЯ ПРЕДОСТАВЛЯЮТСЯ "КАК ЕСТЬ" БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ * ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ БЕЗ ОГРАНИЧЕНИЙ, ЛЮБУЮ ГАРАНТИЮ * ТОВАРНОЙ ЦЕННОСТИ, НАИМЕНОВАНИЯ, НЕДОСТАТОЧНОСТИ НАРУШЕНИЙ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ * ЦЕЛИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР ИЛИ ЕГО ЛИЦЕНЗИАРЫ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ИЛИ * ОБЯЗАНЫ ПО КОНТРАКТУ, НЕБРЕЖНОСТИ, СТРОГОЙ ОТВЕТСТВЕННОСТИ, ВКЛАДУ, * НАРУШЕНИЮ ГАРАНТИЙ ИЛИ ДРУГИМ ЮРИДИЧЕСКИМ ПРИВЕДЕННЫМ ТЕОРИЯМ, КАКИМ-ЛИБО ПРЯМЫМ ИЛИ КОСВЕННЫМ * УБЫТКАМ ИЛИ КОСВЕННЫМ УБЫТКАМИ , * КОСВЕННЫЙ, КАРАТЕЛЬНЫЙ ИЛИ КОСВЕННЫЙ УБЫТК, ПОТЕРЯ ПРИБЫЛИ ИЛИ УТЕРЯ ДАННЫХ, * СТОИМОСТЬ ЗАКУПКИ ТОВАРОВ, ТЕХНОЛОГИЙ, УСЛУГ ИЛИ ЛЮБЫХ * ПРЕТЕНЗИЙ ТРЕТЬИХ СТОРОН (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ​​ЛЮБОЙ ДРУГОЙ ЗАЩИТЫ ИЛИ ИЛИ ИХ ЗАЩИТЫ) . ************************************************ ***************************** / # include  // Аппаратно-зависимая библиотека # include  #include  #include  YATFT tft (0); SDC sdc; #define CS_PIN A0 // MOSI =11, MISO =12, SCK =13XPT2046_Touchscreen ts (CS_PIN); / * При использовании щита все строки управления и данных фиксированы, и при желании можно использовать более простое объявление:* / uint16_t frame =0; uint32_t total_time =0; bool f_first =true; uint8_t mode =0; / ****************************************** ************************************************* **** / void setup (void) {Serial.begin (115200); // инициализируем последовательный порт Serial.println (F ("Пример воспроизведения фото и видео!")); tft.begin (0x4391, -8); // инициализируем отображение tft.SetColor (BLACK); tft.ClearDevice (); // Очистить экран ts.begin (); // Запускаем Touchscreen SPI.end (); Serial.print (F ("FS Init ...")); uint8_t state =sdc.FSInit (); если (состояние ==0) Serial.println (F ("неудача.")); иначе Serial.println (F ("успех.")); sdc.currentFileType =DEMO_FILE_TYPE_RGB; total_time =millis () + 500;} цикл void (void) {if (total_time  100 &&y <140) {// Режим остановки =1; Serial.println (F ("режим =1")); } else if (x> 140 &&x <180 &&y> 100 &&y <140) {// Режим паузы =2; // Рисуем кнопки tft.SetColor (BRIGHTRED); tft.DrawFillCirc (GetMaxX () / 4, GetMaxY () / 2,50); tft.SetColor (ЯРКО-ЖЕЛТЫЙ); tft.DrawFillRect (GetMaxX () / 4-30, GetMaxY () / 2-30, GetMaxX () / 4 + 30, GetMaxY () / 2 + 30); tft.SetColor (ЯРКОСТЬ); tft.DrawFillCirc (GetMaxX () / 4 * 3, GetMaxY () / 2,50); tft.SetColor (ЯРКО-ЖЕЛТЫЙ); для (uint8_t я =0; я <60; я ++) {tft.DrawLine (210 + я, 90 + я / 2, 210 + я, 150-я / 2); } Serial.println (F ("mode =2")); } else if (x> 190 &&y> 100 &&y <140) {// Режим воспроизведения =0; Serial.println (F ("режим =0")); } режим возврата; } SPI.end (); режим возврата;} 

Схема

Библиотека TFT-экрана для Arduino Nano
https://github.com/YATFT/YATFT

Производственный процесс

  1. Производственная мобильность:данные, голос, видео и местоположение
  2. Новый видео конвертер тестирует автомобильные информационно-развлекательные дисплеи APIX3
  3. МОДУЛЬ ДАННЫХ:23,1-дюймовый ультра-растянутый TFT-дисплей с интеллектуальным управлением
  4. Считывание аналоговых датчиков с помощью Raspberry Pi и Zabbix Supervisor
  5. Kuman TFT 3.5 RetroPie 2018
  6. Видео K 2019:инновации в переработке оборудования и материалов
  7. Что обозначают DN и PN на фланцах? (Видео)
  8. Практичный 3D-дисплей, созданный с помощью голографии и технологии светового поля
  9. Растровая анимация на сенсорном экране TFT ILI9341
  10. Отделка поверхности для литья под давлением:SPI и VDI