Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

E-Ink, epaper, электронная бумага

Вс май 14, 2023 13:46:59

Есть такой дисплей
Изображение
https://aliexpress.ru/item/32870097847.html

Они есть двухцветные.
Основной цвет работает отлично. Второй дополнительный плохо - его еле видно, особенно при температуре воздуха ниже 25. Может кто-то знает в чем причина?
Иногда в момент обновления экрана второй цвет на долю секунды проявляется четко так как должен, но сразу же исчезает т.к. идет обновление экрана. Т.е. вообще дисплей может работать нормально, но что-то ему мешает. Изначально с завода дисплей шел с отображаемой фирменной картинкой обоих цветов - очень четкие насыщенные были цвета, не сразу понял это дисплей или фейковая картинка на нем приклеена. И первое время тоже цвет был достаточно четкий, хотя уже бледнее чем должен был бы быть.

Подключал к разным микроконтроллерам с разной прошивкой - никаких изменений в работе дисплея нет.
Может быть мне достался брак?

Re: E-Ink, epaper, электронная бумага

Чт июл 13, 2023 00:03:11

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

Re: E-Ink, epaper, электронная бумага

Пн июл 17, 2023 12:28:54

Не довелось попользоваться, но где-то читал (на хабре вроде), что надо несколько раз отрефрешить картинку для четкости. Вроде таким макаром, посылая картинку частями, народ даже полутонов добивается.
Нет ничего там такого. Выводил картинку на свой чёрно-красный EPD - всё нормально вывелось. Процедура вывода простая:
Код:
//Sends the image buffer in RAM to e-Paper and displays
void EPD_Display(u8 const *blackimage, u8 const *redimage)
{
  uint j, i;
  EPD_SetWindows(0, 0, EPD_WIDTH, EPD_HEIGHT);
  for (j = 0; j < EPD_HEIGHT; j++) {
    EPD_SetCursor(0, j);
    for (i = 0; i < sizeof(widthBuf); i++) widthBuf[i] = blackimage[i + j * sizeof(widthBuf)];
    EPD_Write(EPD_WRITE_RAM, widthBuf, sizeof(widthBuf));
  }
  for (j = 0; j < EPD_HEIGHT; j++) {
    EPD_SetCursor(0, j);
    for (i = 0; i < sizeof(widthBuf); i++) widthBuf[i] = redimage[i + j * sizeof(widthBuf)];
    EPD_Write(EPD_WRITE_RAM_RED, widthBuf, sizeof(widthBuf));
  }
  EPD_TurnOnDisplay();
}

EPD_SetWindows() - устанавливает окно вывода. EPD_Write() - просто даёт команду записи блока пикселей через SPI и передаёт сами пиксели. Однократно, никаких повторов. Это команда контроллеру EPD, что уж он там делает с самими чернилами - это его дело.
Как видно из кода: картинка делится на чёрную и красную часть, и они посылаются в контроллер по-отдельности.

Этим кодом была записана картинка в конце 2020г. Картинка до сих пор отображается ярко (с тех пор ни разу не переписывалась), и на глаз никакой из цветов в яркости не потерял - оба примерно одинаково выглядят:
Изображение
Ответить