Использование сенсорного TFT-экрана с Arduino Uno R3 через I2C

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

Насколько я понимаю, должна быть возможность управлять TFT-тачскрином через I2C? За последние два часа я немного погуглил и едва смог найти какую-либо информацию о том, какие экраны использовать для таких проектов, ни учебных пособий, ни наличия каких-либо библиотек.

Можно ли реализовать проект такого масштаба с помощью Uno R3 или мне стоит рассмотреть Due или Mega?

У меня есть экран для сенсорного экрана, но он оставляет мне только один ШИМ и один аналоговый контакт, если я не планирую использовать SD-карту, которая находится на его задней стороне.

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

Кроме того, если вы, ребята, можете порекомендовать какие-нибудь книги по этой теме, я буду рад принять рекомендации.

Заранее спасибо

, 👍0


1 ответ


1

Сенсорный экран TFT на самом деле обычно состоит из двух совершенно отдельных элементов:

  • TFT-дисплей
  • Сенсорный экран и дополнительный интерфейсный чип

Хотя вы можете получить оба из них вместе на плате с использованием I2C, это довольно редко. Гораздо чаще можно найти платы с SPI или 8- (или 16-) битными параллельными интерфейсами для TFT-экрана, и SPI (или иногда 4-канальный аналоговый — прямое подключение к самому сенсорному экрану) для сенсорного экрана.

I2C на самом деле используется только для очень маленьких экранов. Низкая скорость протокола I2C означает, что обновление дисплея происходит очень медленно, что приводит к очень низкой производительности для всего, что больше, чем, скажем, 128x128 пикселей. Обычно он используется для таких вещей, как небольшие OLED-дисплеи, а не для больших TFT-дисплеев.

Сенсорные экраны с I2C обычно емкостные, а не дешевые резистивные, поэтому они немного дороже и с ними сложнее работать. Самый распространенный чип сенсорного экрана, XPT2046, — это SPI.

Втиснуть все, что вы хотите сделать, в Uno будет сложно, и не только из-за количества контактов ввода-вывода, которые обычно требуются дисплею. Работа с дисплеями обычно подразумевает множество графики (значков, символов, шрифтов и т. д.), а это означает много флэш-памяти. Mega2560 будет лучшим выбором для этого, если вы хотите остаться с 8-битной.

Однако лучшие графические результаты можно получить, используя более мощную плату. Arduino Due с 32-битным чипом ARM позволит вам выполнять гораздо больше графических манипуляций, например, рисовать красивые графики и т. д.

Мое личное предпочтение, однако, заключается в использовании платы на базе PIC32 и ядра chipKIT в сочетании с моей собственной мощной библиотекой DisplayCore. Но тогда я предвзят.

,

Понятно, спасибо большое за ваш комментарий. Я также обнаружил, что SPI больше подходит для нашего целевого размера экрана., @Streamline

Думаю, на данный момент я остановлюсь на Arduino, поскольку я все еще новичок во всем этом, и наличие такого количества руководств и книг в моем распоряжении очень полезно, пока я не разберусь лучше, как все это работает. Я уже заказал Mega, так как понял, что в любом случае будет туго с вводом/выводом, если мы хотим управлять x количеством светодиодных лент, хотя я также знаю о сдвиговых регистрах, способных к ШИМ, таких как TLC5490, который также находится в разработке. Mega в любом случае будет хорош для прототипирования., @Streamline

Конечно, хотя мне приходится подключать свои устройства, когда это возможно ;) С TLC5490 работать отвратительно. TLC59116 намного лучше., @Majenko

В чем его непригодность для работы? Я тоже рассмотрю TLC59116., @Streamline

Насколько я помню, протокол пользовательский и очень неудобный в использовании. TLC59116 — это просто I2C., @Majenko

На самом деле, я могу путать его с некоторыми ранними адресуемыми светодиодами, которые использовали протокол, требующий постоянного обновления. TLC5940 — это как сдвиговый регистр, со всеми вытекающими из этого недостатками (необходимость обновления всей цепи, чтобы просто сменить один светодиод). Это не так плохо, как я помнил, но TLC59116 все равно лучше, так как у него I2C, который позволяет адресовать каждый выход по отдельности., @Majenko