67 lines
2.4 KiB
Arduino
67 lines
2.4 KiB
Arduino
|
// 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 <GFX.h>
|
||
|
|
||
|
#include <GxEPD2_BW.h>
|
||
|
#include <Fonts/FreeMonoBold24pt7b.h>
|
||
|
|
||
|
// 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<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> 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() {};
|