diff --git a/kmk/modules/oled.py b/kmk/modules/oled.py new file mode 100644 index 0000000..4385fd9 --- /dev/null +++ b/kmk/modules/oled.py @@ -0,0 +1,41 @@ +import adafruit_ssd1306 +import busio + +from kmk.modules import Module + +class Oled(Module): + def __init__(self, pin1, pin2, startup_image = None, anim1 = None, anim2 = None): + print("Init OLED") + self.i2c = busio.I2C(pin1, pin2) + self.startup_image = startup_image + # self.anim1 = anim1 + # self.anim2 = anim2 + # self.anim_state = self.anim1 + self.oled = adafruit_ssd1306.SSD1306_I2C(128, 32, self.i2c) + self.oled.fill(0) + print(self.oled.height, self.oled.width) + self.oled.text("Init", 0, 0, 1) + self.oled.show() + + def _draw_image(self, image, size=(32, 128)): + print("calling draw_image") + self.oled.fill(0) + for i in range(size[0]): + for j in range(size[1]): + self.oled.pixel(j, i, 0 if image[i][j] is False else True) + self.oled.show() + + def during_bootup(self, keyboard): + if self.startup_image is not None: + self._draw_image(self.startup_image) + + print("booting") + return super().during_bootup(keyboard) + + def after_matrix_scan(self, keyboard): + return super().after_matrix_scan(keyboard) + + def process_key(self, keyboard, key, is_pressed): + # self._draw_image(self.anim1 if self.anim_state == self.anim2 else self.anim2, (32,32)) + # self.anim_state = self.anim2 if self.anim_state == self.anim1 else self.anim2 + return super().process_key(keyboard, key, is_pressed) \ No newline at end of file