From: Dustin Walde Date: Wed, 1 Jan 2025 02:32:09 +0000 (-0800) Subject: Add Display class X-Git-Url: https://git.walde.dev/?a=commitdiff_plain;h=20c4f6f11bd3c3633792f91bbbc5c636a812f1ff;p=epaper_display Add Display class --- diff --git a/src/display.py b/src/display.py new file mode 100644 index 0000000..1899d42 --- /dev/null +++ b/src/display.py @@ -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() + diff --git a/src/drivers/epd12in48b.py b/src/drivers/epd12in48b.py index bf56c0c..0ab2ccb 100644 --- a/src/drivers/epd12in48b.py +++ b/src/drivers/epd12in48b.py @@ -53,6 +53,9 @@ class EPD(object): self.EPD_M2_BUSY_PIN = epdconfig.EPD_M2_BUSY_PIN self.EPD_S2_BUSY_PIN = epdconfig.EPD_S2_BUSY_PIN + def init(self): + self.Init() + def Init(self): print("EPD init...") epdconfig.module_init() @@ -283,6 +286,9 @@ class EPD(object): epdconfig.digital_write(self.EPD_M1S1_RST_PIN, 1) epdconfig.digital_write(self.EPD_M2S2_RST_PIN, 1) time.sleep(0.2) + + def sleep(self): + self.EPD_Sleep() def EPD_Sleep(self): self.M1S1M2S2_SendCommand(0X02)