def __init__(self): # Fonts self.font_mini = terminalio.FONT self.font_middle = bitmap_font.load_font("fonts/dseg-10.bdf") self.font_spd = bitmap_font.load_font("fonts/dseg-48.bdf") displayio.release_displays() # Display init spi = busio.SPI(clock=board.B10, MOSI=board.B15, MISO=board.B14) while not spi.try_lock(): pass spi.configure(baudrate=25000000, phase=0, polarity=0) spi.unlock() init_sequence = ( b"\x01\x80\x32" # _SWRESET and Delay 50ms b"\x11\x80\xFF" # _SLPOUT b"\x3A\x81\x05\x0A" # _COLMOD b"\xB1\x83\x00\x06\x03\x0A" # _FRMCTR1 b"\x36\x01\x08" # _MADCTL b"\xB6\x02\x15\x02" # _DISSET5 b"\xC0\x82\x02\x70\x0A" # _PWCTR1 GVDD = 4.7V, 1.0uA, 10 ms delay b"\xC1\x01\x05" # _PWCTR2 VGH = 14.7V, VGL = -7.35V b"\xC2\x02\x01\x02" # _PWCTR3 Opamp current small, Boost frequency b"\xC5\x82\x3C\x38\x0A" # _VMCTR1 b"\xFC\x02\x11\x15" # _PWCTR6 b"\xE0\x10\x09\x16\x09\x20\x21\x1B\x13\x19\x17\x15\x1E\x2B\x04\x05\x02\x0E" # _GMCTRP1 Gamma b"\xE1\x90\x0B\x14\x08\x1E\x22\x1D\x18\x1E\x1B\x1A\x24\x2B\x06\x06\x02\x0F\x0A" # _GMCTRN1 b"\x13\x80\x0a" # _NORON b"\x29\x80\xFF" # _DISPON ) display_bus = displayio.FourWire(spi, command=board.B8, chip_select=board.B9, reset=board.B5) self.display = displayio.Display(display_bus, init_sequence, width=128, height=160) self.display.rotation = 90
class DummyAudio: def play(self, f, loop=False): pass def stop(self): pass def mute(self, mute): pass i2c = board.I2C() ss = Seesaw(i2c, 0x5E) spi = board.SPI() displayio.release_displays() while not spi.try_lock(): pass spi.configure(baudrate=24000000) spi.unlock() ss.pin_mode(8, ss.OUTPUT) ss.digital_write(8, True) # reset display display_bus = displayio.FourWire(spi, command=board.D6, chip_select=board.D5) display = displayio.Display(display_bus, _INIT_SEQUENCE, width=160, height=80, rowstart=24) del _INIT_SEQUENCE buttons = GamePadSeesaw(ss) audio = DummyAudio() backlight = PWMOut(ss, 5) backlight.duty_cycle = 0
b"\x3a\x01\x05" # COLMOD - 16bit color b"\xe0\x10\x02\x1c\x07\x12\x37\x32\x29\x2d\x29\x25\x2B\x39\x00\x01\x03\x10" # _GMCTRP1 Gamma b"\xe1\x10\x03\x1d\x07\x06\x2E\x2C\x29\x2D\x2E\x2E\x37\x3F\x00\x00\x02\x10" # _GMCTRN1 b"\x13\x80\x0a" # _NORON b"\x29\x80\x64" # _DISPON ) displayio.release_displays() _tft_spi = busio.SPI(clock=board.TFT_SCK, MOSI=board.TFT_MOSI) _tft_spi.try_lock() _tft_spi.configure(baudrate=24000000) _tft_spi.unlock() _fourwire = displayio.FourWire(_tft_spi, command=board.TFT_DC, chip_select=board.TFT_CS) _reset = digitalio.DigitalInOut(board.TFT_RST) _reset.switch_to_output(value=0) time.sleep(0.05) _reset.value = 1 time.sleep(0.05) display = displayio.Display(_fourwire, _TFT_INIT, width=160, height=128, rotation=0, backlight_pin=board.TFT_LITE) del _TFT_INIT display.auto_brightness = True buttons = gamepadshift.GamePadShift( digitalio.DigitalInOut(board.BUTTON_CLOCK), digitalio.DigitalInOut(board.BUTTON_OUT), digitalio.DigitalInOut(board.BUTTON_LATCH), ) audio = stage.Audio(board.SPEAKER, board.SPEAKER_ENABLE)
b"\xc7\x01\x86" # VCM control2 b"\x36\x01\x38" # Memory Access Control b"\x37\x01\x00" # Vertical scroll zero b"\x3a\x01\x55" # COLMOD: Pixel Format Set b"\xb1\x02\x00\x18" # Frame Rate Control (In Normal Mode/Full Colors) b"\xb6\x03\x08\x82\x27" # Display Function Control b"\xF2\x01\x00" # 3Gamma Function Disable b"\x26\x01\x01" # Gamma curve selected b"\xe0\x0f\x0F\x31\x2B\x0C\x0E\x08\x4E\xF1\x37\x07\x10\x03\x0E\x09\x00" # Set Gamma b"\xe1\x0f\x00\x0E\x14\x03\x11\x07\x31\xC1\x48\x08\x0F\x0C\x31\x36\x0F" # Set Gamma b"\x11\x80\x78" # Exit Sleep then delay 0x78 (120ms) b"\x29\x80\x78" # Display on then delay 0x78 (120ms) ) # Setup the Display display = displayio.Display(display_bus, INIT_SEQUENCE, width=320, height=240) # # DONE - now you can use the display however you want # bitmap = displayio.Bitmap(320, 240, 2) palette = displayio.Palette(2) palette[0] = 0 palette[1] = 0xFFFFFF for x in range(10, 20): for y in range(10, 20): bitmap[x, y] = 1
def mute(self, mute): pass displayio.release_displays() _tft_spi = busio.SPI(clock=board.SCK, MOSI=board.MOSI) _tft_spi.try_lock() _tft_spi.configure(baudrate=24000000) _tft_spi.unlock() _fourwire = displayio.FourWire(_tft_spi, command=board.A3, chip_select=board.A2, reset=board.A4) display = displayio.Display(_fourwire, _INIT_SEQUENCE, width=160, height=128, rotation=0, backlight_pin=board.A5) display.auto_brightness = True buttons = gamepad.GamePad( digitalio.DigitalInOut(board.SCL), digitalio.DigitalInOut(board.D12), digitalio.DigitalInOut(board.D11), digitalio.DigitalInOut(board.D9), digitalio.DigitalInOut(board.D10), digitalio.DigitalInOut(board.D7), digitalio.DigitalInOut(board.SDA), ) audio = DummyAudio()
b"\xC1\x01\x05" # _PWCTR2 VGH = 14.7V, VGL = -7.35V b"\xC2\x02\x01\x02" # _PWCTR3 Opamp current small, Boost frequency b"\xC5\x82\x3C\x38\x0A" # _VMCTR1 b"\xFC\x02\x11\x15" # _PWCTR6 b"\xE0\x10\x09\x16\x09\x20\x21\x1B\x13\x19\x17\x15\x1E\x2B\x04\x05\x02\x0E" # _GMCTRP1 Gamma b"\xE1\x90\x0B\x14\x08\x1E\x22\x1D\x18\x1E\x1B\x1A\x24\x2B\x06\x06\x02\x0F\x0A" # _GMCTRN1 b"\x13\x80\x0a" # _NORON b"\x29\x80\xFF" # _DISPON ) display_bus = displayio.FourWire(spi, command=board.B8, chip_select=board.B9, reset=board.B5) #display = ILI9341(display_bus, width=160, height=128) display = displayio.Display(display_bus, init_sequence, width=128, height=160) display.rotation = 90 print(const("Initializing UI...")) # Fonts font10 = terminalio.FONT font20 = bitmap_font.load_font("fonts/dseg-10.bdf") font_spd = bitmap_font.load_font("fonts/dseg-48.bdf") # UI print(const("Loading fonts...")) main_group = displayio.Group(max_size=50) #background bg_bitmap = displayio.Bitmap(160, 128, 2) bg_palette = displayio.Palette(1) bg_palette[0] = 0xffbf00 # Bright Green