// подключаем библиотеку для работы с SPI #include // подключаем файл для работы с дисплеем #include "epd1in54.h" // подключаем файл для рисования примитивов #include "epdpaint.h" // объявляем константы для работы с дисплеем #define COLORED 0 #define UNCOLORED 1 // объявляем массив пикселей для вывода на дисплей unsigned char image[1024]; // объявляем объект для вывода примитивов Paint paint(image, 0, 0); // объявляем объект для работы с дисплеем Epd epd; void setup() { Serial.begin(9600); // инициализируем дисплей if (epd.Init(lut_full_update) != 0) { Serial.print("e-Paper init failed"); return; } // в дисплей встроено 2 области памяти, поэтому для полного обновления // необходимо использовать ClearFrameMemory дважды // отправляем команду очистки epd.ClearFrameMemory(0xFF); // применяем данные из буфера epd.DisplayFrame(); epd.ClearFrameMemory(0xFF); epd.DisplayFrame(); // задаем угол поворота = 0 paint.SetRotate(ROTATE_0); // задаем высоту и ширину окошка вывода графики // количество пикселей не должно превышать количества бит занятых объявленным массивом пикселей // 64*64 < 1024 * 8 // умножаем высоту и ширину окошка и сравниваем с количеством байт в массиве умноженного на 8 paint.SetWidth(64); paint.SetHeight(64); // выводим зачеркнутый прямоугольник // устанавливаем параметр окошка - не закрашено paint.Clear(UNCOLORED); // рисуем прямоугольник paint.DrawRectangle(0, 0, 40, 50, COLORED); // рисуем 2 линии paint.DrawLine(0, 0, 40, 50, COLORED); paint.DrawLine(40, 0, 0, 50, COLORED); // вносим окошко в буфер epd.SetFrameMemory(paint.GetImage(), 16, 30, paint.GetWidth(), paint.GetHeight()); // выводим круг paint.Clear(UNCOLORED); paint.DrawCircle(32, 32, 30, COLORED); epd.SetFrameMemory(paint.GetImage(), 120, 23, paint.GetWidth(), paint.GetHeight()); // выводим закрашенный прямоугольник paint.Clear(UNCOLORED); paint.DrawFilledRectangle(0, 0, 40, 50, COLORED); epd.SetFrameMemory(paint.GetImage(), 16, 120, paint.GetWidth(), paint.GetHeight()); // выводим закрашенный круг paint.Clear(UNCOLORED); paint.DrawFilledCircle(32, 32, 30, COLORED); epd.SetFrameMemory(paint.GetImage(), 120, 113, paint.GetWidth(), paint.GetHeight()); epd.DisplayFrame(); } void loop() { }