Артефакты на дисплее

Тема в разделе "Arduino & Shields", создана пользователем save.l, Воскресенье в 18:18.

  1. save.l

    save.l Гик

    Добры день.
    Помогите победить появление артефактов при включении дисплея (видео во вложении).
    Дисплей 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();                                                     // очистка дисплея
    ...
     
  2. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Не знаю как у вас, но уже месяц Амперка жутко тормозит не у меня одного. А от видео - вообще глохнет. Вы картинку недвижную пришлите и словами скажите в чем беда.
    Возможно знаю в чем проблема. У вас на шине I2C - не одно устройство ?! Приемный буфер I2c принимает данные, независимо от адреса. А когда проходит команда именно его адреса - все что затесалось в приемный буфер - оказывается на экране. Сталкивался с этим. Там перед каждым выводом на экран надо делать "продувку" шины. Если найду в своем бедламе - выложу код. Надеюсь резисторы подтяжки не забыли поставить. Без них - низя.
     
  3. save.l

    save.l Гик

    На шине I2C устройств много. Но проблема только при включении: при подаче питания, на дисплее появляются артефакты (хаотичные иероглифы). Далее все работает как нужно.
    Добавил задержку:
    Код (C++):
      oled.init();                                                      // Инициализация дисплея
      delay(2000);
      oled.clear();                                                     // очистка дисплея
    и артефакты зависают на 2 сек. Получается проблема в моменте инициализации.
    Может библиотека...?!
    Про "продувку" интересно узнать.
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Не. Посмотрел. Продувка это из другой оперы. Но по вопросу - Вы уверены что выходят артефакты ? Может это фирменная аппаратная заставка дисплея или библиотеки ? У них вроде даже команды инициализации есть - с выводом фирмовой заставки или без. Если это только при подаче питания - нажмите ресет на процессоре и включите ваш девайс в питалово. И увидите фирмовую заставку - если она там есть.У меня в малюсеньком дисплейчике - точно была, похожая на крылья. И последнее ну и чем она вам мешает ?
     
    save.l нравится это.
  5. save.l

    save.l Гик

    Именно артефакты, они всегда разные. Иногда бывает просто "точка" появляется, а иногда весь дисплей в кракозябрах.
    На работу не влияет. Но как то не эстетично, почему бы не попытаться убрать - психануть всегда успею :)
     
  6. parovoZZ

    parovoZZ Гуру

    код написан неправильно. Если устройство не ответит в период, когда процессор выполняет секцию Setup(), то как оно всё будет дальше работать?
    А артефакты - это нормально. Либо так запланировано, либо долго очищается статическая память. I2C же.
     
    Ariadna-on-Line нравится это.
  7. save.l

    save.l Гик

    вы про какой код?
    жаль если так конечно
     
  8. parovoZZ

    parovoZZ Гуру

    из первого поста
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Ну да. Дисплей щас - тотже процессор со встроенным ПО. Если в нем заложена неторопливая инициализация - он и будет медленно убирать сопли не реагируя ни на что. На дисплее что-то видно - если включена подсветка. А подсветка управляется аппаратно - без участия процессора дисплея - по сигналу на пине управления. Сделайте так чтобы по умолчанию подсветка была выключена. Или хост-проц в сетапе заставляйте её сразу выключать.
     
    Последнее редактирование: Понедельник в 12:05
    save.l нравится это.
  10. parovoZZ

    parovoZZ Гуру

    маловероятно. Скорее всего, матрица на ASIC.
    очистка памяти снаружи. После включения там мусор, ибо вся статическая память - D-триггеры.
     
    save.l нравится это.
  11. Ariadna-on-Line

    Ariadna-on-Line Гуру

    В дисплеях обычно память отдельно - экран отдельно. Команда
    LCD.clear () - очищает память. А чтоб эта чистота сдублировалась на экран - должна быть отдельная команда типа
    LCD.screen() или что-то подобное.
     
  12. parovoZZ

    parovoZZ Гуру

    Очистка памяти в дисплее - запись нулей по всем адресам. Это имеет смысл у тех дисплеев, которые допускают произвольный доступ к памяти. Отдельной команды, как правило, нет.