]> git.walde.dev - epaper_display/commitdiff
Add Display class
authorDustin Walde <redacted>
Wed, 1 Jan 2025 02:32:09 +0000 (18:32 -0800)
committerDustin Walde <redacted>
Wed, 1 Jan 2025 02:32:09 +0000 (18:32 -0800)
src/display.py [new file with mode: 0644]
src/drivers/epd12in48b.py

diff --git a/src/display.py b/src/display.py
new file mode 100644 (file)
index 0000000..1899d42
--- /dev/null
@@ -0,0 +1,47 @@
+"""
+"""
+
+from logging import Logger
+
+import PIL
+from PIL import Image
+
+from drivers.epd12in48b import EPD, EPD_HEIGHT, EPD_WIDTH
+
+logger = Logger(__name__)
+
+
+class Display:
+
+    def __init__(self) -> None:
+        self.width = EPD_WIDTH
+        self.height = EPD_HEIGHT
+        self.epaper = EPD()
+
+    def render(self, black: Image, red: Image):
+        logger.info("Init display")
+        self.epaper.init()
+        logger.info("Update display")
+        self.epaper.display(black, red)
+        logger.info("Sleep display")
+        self.epaper.sleep()
+
+    def calibrate(self, iterations=1):
+        logger.info("Init display for calibration")
+        self.epaper.init()
+
+        white = Image.new('1', (self.width, self.height), 'white')
+        black = Image.new('1', (self.width, self.height), 'black')
+
+        logger.info('Calibrating e-paper display')
+        for i in range(iterations):
+            logger.info('black')
+            self.epaper.display(black, white)
+            logger.info('red')
+            self.epaper.display(white, black)
+            logger.info('white')
+            self.epaper.display(white, white)
+            logger.info(f'#{i + 1} of {iterations} complete')
+
+        self.epaper.sleep()
+
index bf56c0c50197f2618ae6fa4d470f4a01bf5e3064..0ab2ccb2db0e2b979623d3c438077a4f17b88965 100644 (file)
@@ -53,6 +53,9 @@ class EPD(object):
         self.EPD_M2_BUSY_PIN  = epdconfig.EPD_M2_BUSY_PIN\r
         self.EPD_S2_BUSY_PIN  = epdconfig.EPD_S2_BUSY_PIN\r
 \r
+    def init(self):\r
+        self.Init()\r
+\r
     def Init(self):\r
         print("EPD init...")\r
         epdconfig.module_init()\r
@@ -283,6 +286,9 @@ class EPD(object):
         epdconfig.digital_write(self.EPD_M1S1_RST_PIN, 1) \r
         epdconfig.digital_write(self.EPD_M2S2_RST_PIN, 1) \r
         time.sleep(0.2) \r
+\r
+    def sleep(self):\r
+        self.EPD_Sleep()\r
     \r
     def EPD_Sleep(self):\r
         self.M1S1M2S2_SendCommand(0X02)        \r