Добры день. Помогите победить появление артефактов при включении дисплея (видео во вложении). Дисплей Winstar WEH001602A. Библиотека и порядок инициализации следующие: Код (C++): #include <LiquidCrystal_I2C_OLED.h> // библиотка для OLED ... LiquidCrystal_I2C oled(ADDR_OLED, 16, 2); // Указываем I2C адрес и параметры дисплея (16 символов, 2 строки) ... void setup() { oled.init(); // Инициализация дисплея oled.clear(); // очистка дисплея ...
Не знаю как у вас, но уже месяц Амперка жутко тормозит не у меня одного. А от видео - вообще глохнет. Вы картинку недвижную пришлите и словами скажите в чем беда. Возможно знаю в чем проблема. У вас на шине I2C - не одно устройство ?! Приемный буфер I2c принимает данные, независимо от адреса. А когда проходит команда именно его адреса - все что затесалось в приемный буфер - оказывается на экране. Сталкивался с этим. Там перед каждым выводом на экран надо делать "продувку" шины. Если найду в своем бедламе - выложу код. Надеюсь резисторы подтяжки не забыли поставить. Без них - низя.
На шине I2C устройств много. Но проблема только при включении: при подаче питания, на дисплее появляются артефакты (хаотичные иероглифы). Далее все работает как нужно. Добавил задержку: Код (C++): oled.init(); // Инициализация дисплея delay(2000); oled.clear(); // очистка дисплея и артефакты зависают на 2 сек. Получается проблема в моменте инициализации. Может библиотека...?! Про "продувку" интересно узнать.
Не. Посмотрел. Продувка это из другой оперы. Но по вопросу - Вы уверены что выходят артефакты ? Может это фирменная аппаратная заставка дисплея или библиотеки ? У них вроде даже команды инициализации есть - с выводом фирмовой заставки или без. Если это только при подаче питания - нажмите ресет на процессоре и включите ваш девайс в питалово. И увидите фирмовую заставку - если она там есть.У меня в малюсеньком дисплейчике - точно была, похожая на крылья. И последнее ну и чем она вам мешает ?
Именно артефакты, они всегда разные. Иногда бывает просто "точка" появляется, а иногда весь дисплей в кракозябрах. На работу не влияет. Но как то не эстетично, почему бы не попытаться убрать - психануть всегда успею
код написан неправильно. Если устройство не ответит в период, когда процессор выполняет секцию Setup(), то как оно всё будет дальше работать? А артефакты - это нормально. Либо так запланировано, либо долго очищается статическая память. I2C же.
Ну да. Дисплей щас - тотже процессор со встроенным ПО. Если в нем заложена неторопливая инициализация - он и будет медленно убирать сопли не реагируя ни на что. На дисплее что-то видно - если включена подсветка. А подсветка управляется аппаратно - без участия процессора дисплея - по сигналу на пине управления. Сделайте так чтобы по умолчанию подсветка была выключена. Или хост-проц в сетапе заставляйте её сразу выключать.
маловероятно. Скорее всего, матрица на ASIC. очистка памяти снаружи. После включения там мусор, ибо вся статическая память - D-триггеры.
В дисплеях обычно память отдельно - экран отдельно. Команда LCD.clear () - очищает память. А чтоб эта чистота сдублировалась на экран - должна быть отдельная команда типа LCD.screen() или что-то подобное.
Очистка памяти в дисплее - запись нулей по всем адресам. Это имеет смысл у тех дисплеев, которые допускают произвольный доступ к памяти. Отдельной команды, как правило, нет.