From 4546968856577768a5873cdb1f80a5aa34124395 Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 18 Dec 2023 10:01:43 -0500 Subject: [PATCH] FourWire support for 8.x.x and 9.x.x --- adafruit_displayio_sh1106.py | 15 ++++++++++----- examples/displayio_sh1106_simpletest.py | 10 ++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/adafruit_displayio_sh1106.py b/adafruit_displayio_sh1106.py index 7f0a66d..74d9ecf 100644 --- a/adafruit_displayio_sh1106.py +++ b/adafruit_displayio_sh1106.py @@ -23,8 +23,13 @@ """ -# imports -import displayio +# Support both 8.x.x and 9.x.x. Change when 8.x.x is discontinued as a stable release. +try: + from fourwire import FourWire + from busdisplay import BusDisplay +except ImportError: + from displayio import FourWire + from displayio import Display as BusDisplay __version__ = "0.0.0+auto.0" __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_DisplayIO_SH1106.git" @@ -52,9 +57,9 @@ ) -class SH1106(displayio.Display): +class SH1106(BusDisplay): """ - SH1106 driver for use with DisplayIO + SH1106 driver for use with displayio :param bus: The bus that the display is connected to. :param int width: The width of the display. Maximum of 132 @@ -62,7 +67,7 @@ class SH1106(displayio.Display): :param int rotation: The rotation of the display. 0, 90, 180 or 270. """ - def __init__(self, bus: displayio.FourWire, **kwargs) -> None: + def __init__(self, bus: FourWire, **kwargs) -> None: init_sequence = bytearray(_INIT_SEQUENCE) super().__init__( bus, diff --git a/examples/displayio_sh1106_simpletest.py b/examples/displayio_sh1106_simpletest.py index 35556b1..391c4b0 100644 --- a/examples/displayio_sh1106_simpletest.py +++ b/examples/displayio_sh1106_simpletest.py @@ -6,15 +6,21 @@ import board import busio import displayio -import fourwire import terminalio from adafruit_display_text import label import adafruit_displayio_sh1106 +# Compatibility with both CircuitPython 8.x.x and 9.x.x. +# Remove after 8.x.x is no longer a supported release. +try: + from fourwire import FourWire +except ImportError: + from displayio import FourWire + displayio.release_displays() spi = busio.SPI(board.SCK, board.MOSI) -display_bus = fourwire.FourWire( +display_bus = FourWire( spi, command=board.OLED_DC, chip_select=board.OLED_CS,