У меня есть стандартный ЖК-дисплей 16x2 (я думаю, что он совместим с Hitachi HD44780 - см. Сводку и технические характеристики ниже), подключенный к Arduino Uno с помощью 4 контактов данных, как описано здесь , хотя я добавил 2 резистора 220 Ом параллельно (т.е. Резистор 110 Ом) на выводе 16 (заземление задней подсветки), и заменили Pot на статические резисторы для создания 4 В на Vo.
Короче говоря, RW подключен к земле, а RS, Enable и Data4-7 подключены к выводам Arduino, а данные 0-3 плавающие.
У меня есть другие вещи (датчики, транзистор с оптоизолированным SSR и сетевое реле, некоторые кнопки), подключенные к различным контактам на Arduino. Код, который я использую, записывает текст на дисплей несколько раз в секунду, и обычно дисплей работает отлично.
Однако, когда реле замыкается (это занимает около 10 мА и управляется транзистором, который, в свою очередь, управляется от одного из выводов Arduino), иногда ЖК-дисплей искажается. Обычно он остается искаженным до следующего замыкания реле, но иногда при размыкании реле или после нескольких повторных циклов открывания / закрывания для сброса. Полоскание всегда начинается и останавливается одновременно с открытием или закрытием реле.
Под «искаженным» я подразумеваю, что каждый раз, когда я пишу в него после того, как он искажается, вместо того, чтобы писать английские символы, я получаю строку символов, которую я обычно не могу определить в таблице данных (хотя некоторые я могу). Эта строка искаженных символов имеет тенденцию двигаться влево вдоль экрана, когда я пишу новый текст на ЖК-дисплей.
Я уверен, что это не запутывает сам Arduino, так как я одновременно пишу тот же текст на монитор Serial, и он не искажается.
С тех пор я экспериментировал с подключением вывода RW к выходу Arduino и заземлением Data0-3, но это не помогает. Я запитал все устройство от батареи 9 В или от USB, и это не помогает. Я заменил батарею ... без изменений.
Единственное, что, кажется, работает, это отсутствие нагрузки на реле, но это побеждает цель :-)
У меня нет анализатора сигналов или чего-то более сложного, чем мультиметр, ноутбук и Arduino ... У кого-нибудь есть советы, которые помогут мне отладить это?
Сводная таблица ЖКД: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf
Характеристики ЖК-дисплея: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf
Пример искаженного текста: