Использование сенсорного TFT-экрана с Arduino Uno R3 через I2C
Я недавно познакомился с Arduino, потому что друг попросил меня принять участие в проекте. Для проекта требуется несколько светодиодных лент на 24 В, которые будут управляться через ШИМ, возможно, через МОП-транзисторы (у нас в команде есть еще кто-то, кто будет следить за электроникой, я буду в основном отвечать за код), а также различные датчики для измерения окружающей среды. Однако проект также должен включать сенсорный экран, который будет использоваться для программирования этих светодиодов на основе времени и даты и отображения данных от этих датчиков или программирования дальнейших событий на основе их ввода.
Насколько я понимаю, должна быть возможность управлять TFT-тачскрином через I2C? За последние два часа я немного погуглил и едва смог найти какую-либо информацию о том, какие экраны использовать для таких проектов, ни учебных пособий, ни наличия каких-либо библиотек.
Можно ли реализовать проект такого масштаба с помощью Uno R3 или мне стоит рассмотреть Due или Mega?
У меня есть экран для сенсорного экрана, но он оставляет мне только один ШИМ и один аналоговый контакт, если я не планирую использовать SD-карту, которая находится на его задней стороне.
Может быть, я сам найду ответ, но я буквально только несколько дней назад присоединился к веселью Arduino/микроконтроллеров и читаю всю тему в книге «для чайников», которая очень интересна, но это только I2C затрагивается в самом конце, и я не хочу слишком запутываться, забегая вперед и читая о вещах, которые не дают прямых ответов на мои вопросы. Поэтому я обращаюсь к вам, ребята, хотя бы за тем, чтобы вы указали мне правильное направление, о чем мне следует читать, или связали меня с учебными пособиями.
Кроме того, если вы, ребята, можете порекомендовать какие-нибудь книги по этой теме, я буду рад принять рекомендации.
Заранее спасибо
@Streamline, 👍0
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. Но тогда я предвзят.
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- OVF в последовательном мониторе вместо данных
- ЖК-дисплей I2C отображает странные символы
- Соединение I2C зависает Ведущий если ведомый отключается
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Ведомое устройство Arduino с двумя мастерами, использующими одну и ту же шину I2C?
Понятно, спасибо большое за ваш комментарий. Я также обнаружил, что SPI больше подходит для нашего целевого размера экрана., @Streamline
Думаю, на данный момент я остановлюсь на Arduino, поскольку я все еще новичок во всем этом, и наличие такого количества руководств и книг в моем распоряжении очень полезно, пока я не разберусь лучше, как все это работает. Я уже заказал Mega, так как понял, что в любом случае будет туго с вводом/выводом, если мы хотим управлять x количеством светодиодных лент, хотя я также знаю о сдвиговых регистрах, способных к ШИМ, таких как TLC5490, который также находится в разработке. Mega в любом случае будет хорош для прототипирования., @Streamline
Конечно, хотя мне приходится подключать свои устройства, когда это возможно ;) С TLC5490 работать отвратительно. TLC59116 намного лучше., @Majenko
В чем его непригодность для работы? Я тоже рассмотрю TLC59116., @Streamline
Насколько я помню, протокол пользовательский и очень неудобный в использовании. TLC59116 — это просто I2C., @Majenko
На самом деле, я могу путать его с некоторыми ранними адресуемыми светодиодами, которые использовали протокол, требующий постоянного обновления. TLC5940 — это как сдвиговый регистр, со всеми вытекающими из этого недостатками (необходимость обновления всей цепи, чтобы просто сменить один светодиод). Это не так плохо, как я помнил, но TLC59116 все равно лучше, так как у него I2C, который позволяет адресовать каждый выход по отдельности., @Majenko