// GxEPD2_HelloWorld.ino by Jean-Marc Zingg // // Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare. // Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines! // // Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/ // // Author: Jean-Marc Zingg // // Version: see library.properties // // Library: https://github.com/ZinggJM/GxEPD2 // Supporting Arduino Forum Topics (closed, read only): // Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657 // Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865 // // Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues // see GxEPD2_wiring_examples.h for wiring suggestions and examples // if you use a different wiring, you need to adapt the constructor parameters! // uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX //#include #include #include // alternately you can copy the constructor from GxEPD2_display_selection.h or GxEPD2_display_selection_added.h to here // e.g. for Wemos D1 mini: GxEPD2_BW display(GxEPD2_750_T7(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // for handling alternative SPI pins (ESP32, RP2040) see example GxEPD2_Example.ino char HelloWorld[] = "Hello World!"; void setup() { delay(1000); //display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02 display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse updateMessage(HelloWorld); display.hibernate(); } void updateMessage(char text[]) { display.setRotation(0); display.setFont(&FreeMonoBold24pt7b); display.setTextColor(GxEPD_BLACK); int16_t tbx, tby; uint16_t tbw, tbh; display.getTextBounds(text, 0, 0, &tbx, &tby, &tbw, &tbh); // center the bounding box by transposition of the origin: uint16_t x = ((display.width() - tbw) / 2) - tbx; uint16_t y = ((display.height() - tbh) / 2) - tby; display.setFullWindow(); display.firstPage(); do { display.fillScreen(GxEPD_WHITE); display.setCursor(x, y); display.print(text); } while (display.nextPage()); } void loop() {};