41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
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) |