Waveshare 4.2in e-Paper ошибка в библиотеке от производителя
- Войдите на сайт для отправки комментариев
Дисплей не очень популярен, но вдруг кто наступит на граблю ... выложу, чтобы по названию дисплея могли найти.
Производитель хорошо поддерживает продукт, очень много всего выложил - и даташит, и библиотеки для разных платформ, молодцы.
При экспериментах, обнаружилась небольшая ошибка в библиотеке.
Чуть упростил их же пример и сделал вот такой:
#include <SPI.h> #include "epd4in2.h" #include "epdpaint.h" #define COLORED 0 #define UNCOLORED 1 void setup() { Epd epd; epd.Init(); epd.ClearFrame(); unsigned char image[1500]; Paint paint(image, 400, 28); paint.SetWidth(32); paint.SetHeight(32); paint.Clear(UNCOLORED); paint.DrawRectangle(0, 0, 31, 31, COLORED); paint.DrawLine(0, 0, 31, 31, COLORED); paint.DrawLine(31, 0, 0, 31, COLORED); epd.SetPartialWindow(paint.GetImage(), 32, 32, paint.GetWidth(), paint.GetHeight()); epd.SetPartialWindow(paint.GetImage(), 264, 248, paint.GetWidth(), paint.GetHeight()); epd.DisplayFrame(); epd.Sleep(); } void loop(void) {}
Т.е. создаём картинку - квадратный конвертик и в строках №№ 22 и 23 выводим его приблизительно в верхнем левом углу экрана (22) и в правом нижнем (23).
Должно получиться вот так:
а получается, к сожалению, вот так
Для исправления, нужно полезть в файл epd4in2.cpp библиотеки, найти там строки
SendData(((x & 0xf8) + w - 1) >> 8); SendData(((x & 0xf8) + w - 1) | 0x07);
у меня они №№ 117 и 118 и исправить их на
SendData(((x & 0xfff8) + w - 1) >> 8); SendData(((x & 0xfff8) + w - 1) | 0x07);
Всё. Проблема решена.
Напишу в Waveshare, посмотрим, отреагируют ли.
Поступила реакция от Waveshare
Однако, на гитхабе пока не поправили.
Поступила реакция от Waveshare
Ну хоть реагируют, и то хорошо. А вот поправят ли на гите - вопрооос :)
Учитывая, СКОЛЬКО (в указанном Вами, Евгений, файле - еще в 2 местах, а потом еще и в куче директорий в таких же файлах) им придется править - большой вопрос.
Пользую данную библиотеку.
Она уже исправлена.