From f1184d89321949fa9a3b9254ee0d74aca3c159af Mon Sep 17 00:00:00 2001 From: RetiredWizard Date: Mon, 6 Nov 2023 15:11:22 -0500 Subject: [PATCH 1/2] Replace depreciated .show() & changes to displayio --- README.rst | 26 +++++++++++++++++++++--- adafruit_displayio_ssd1305.py | 19 ++++++++++++----- examples/displayio_ssd1305_simpletest.py | 22 ++++++++++++++++---- 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/README.rst b/README.rst index 134f536..16b84d2 100644 --- a/README.rst +++ b/README.rst @@ -64,6 +64,14 @@ Usage Example import board import displayio + # Starting in CircuitPython 9.x fourwire will be a seperate internal library + # rather than a component of the displayio library + try: + import fourwire + # Use for I2C + # import i2cdisplaybus + except ImportError: + pass import terminalio from adafruit_display_text import label import adafruit_displayio_ssd1305 @@ -74,12 +82,24 @@ Usage Example spi = board.SPI() oled_cs = board.D5 oled_dc = board.D6 - display_bus = displayio.FourWire(spi, command=oled_dc, chip_select=oled_cs, - baudrate=1000000, reset=board.D9) + # Check if the version of CircuitPython being used still utilizes FourWise as a + # component of the displayio library + if "FourWire" in dir(displayio): + display_bus = displayio.FourWire( + spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=board.D9 + ) + else: + display_bus = fourwire.FourWire( + spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=board.D9 + ) # Use for I2C # i2c = board.I2C() + # + # For CircuitPython before 9.x # display_bus = displayio.I2CDisplay(i2c, device_address=0x3c) + # For CircuitPython 9.x and later + # display_bus = I2CDisplayBus(i1c, device_address=0x3c) WIDTH = 128 HEIGHT = 64 # Change to 32 if needed @@ -90,7 +110,7 @@ Usage Example # Make the display context splash = displayio.Group() - display.show(splash) + display.root_group = splash color_bitmap = displayio.Bitmap(display.width, display.height, 1) color_palette = displayio.Palette(1) diff --git a/adafruit_displayio_ssd1305.py b/adafruit_displayio_ssd1305.py index b233861..fe0fceb 100644 --- a/adafruit_displayio_ssd1305.py +++ b/adafruit_displayio_ssd1305.py @@ -29,7 +29,18 @@ # imports -import displayio +# Starting in CircuitPython 9.x fourwire will be a seperate internal library +# rather than a component of the displayio library +try: + # pylint: disable=useless-import-alias + from fourwire import FourWire as FourWire + from busdisplay import BusDisplay as BusDisplay + from i2cdisplaybus import I2CDisplayBus as I2CDisplayBus +except ImportError: + # pylint: disable=useless-import-alias + from displayio import FourWire as FourWire + from displayio import Display as BusDisplay + from displayio import I2CDisplay as I2CDisplayBus try: from typing import Union @@ -61,7 +72,7 @@ # pylint: disable=too-few-public-methods -class SSD1305(displayio.Display): +class SSD1305(BusDisplay): """ SSD1305 driver @@ -71,9 +82,7 @@ class SSD1305(displayio.Display): One of (0, 90, 180, 270) """ - def __init__( - self, bus: Union[displayio.Fourwire, displayio.I2CDisplay], **kwargs - ) -> None: + def __init__(self, bus: Union[FourWire, I2CDisplayBus], **kwargs) -> None: colstart = 0 # Patch the init sequence for 32 pixel high displays. init_sequence = bytearray(_INIT_SEQUENCE) diff --git a/examples/displayio_ssd1305_simpletest.py b/examples/displayio_ssd1305_simpletest.py index 0ccef55..49adf79 100644 --- a/examples/displayio_ssd1305_simpletest.py +++ b/examples/displayio_ssd1305_simpletest.py @@ -8,6 +8,13 @@ import board import displayio + +# Starting in CircuitPython 9.x fourwire will be a seperate internal library +# rather than a component of the displayio library +try: + import fourwire +except ImportError: + pass import terminalio from adafruit_display_text import label import adafruit_displayio_ssd1305 @@ -21,9 +28,16 @@ spi = board.SPI() oled_cs = board.D5 oled_dc = board.D6 -display_bus = displayio.FourWire( - spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=oled_reset -) +# Check if the version of CircuitPython being used still utilizes FourWise as a +# component of the displayio library +if "FourWire" in dir(displayio): + display_bus = displayio.FourWire( + spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=oled_reset + ) +else: + display_bus = fourwire.FourWire( + spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=oled_reset + ) # Use for I2C # i2c = board.I2C() # uses board.SCL and board.SDA @@ -39,7 +53,7 @@ # Make the display context splash = displayio.Group() -display.show(splash) +display.root_group = splash color_bitmap = displayio.Bitmap(display.width, display.height, 1) color_palette = displayio.Palette(1) From 740777a1572095a1a5624db065480f95b680cce7 Mon Sep 17 00:00:00 2001 From: RetiredWizard Date: Mon, 6 Nov 2023 15:36:17 -0500 Subject: [PATCH 2/2] Modified Imports for more compact code --- README.rst | 23 +++++++---------------- adafruit_displayio_ssd1305.py | 10 ++++------ examples/displayio_ssd1305_simpletest.py | 24 +++++++++++------------- 3 files changed, 22 insertions(+), 35 deletions(-) diff --git a/README.rst b/README.rst index 16b84d2..7378958 100644 --- a/README.rst +++ b/README.rst @@ -67,11 +67,12 @@ Usage Example # Starting in CircuitPython 9.x fourwire will be a seperate internal library # rather than a component of the displayio library try: - import fourwire + from fourwire import FourWire # Use for I2C - # import i2cdisplaybus + # from i2cdisplaybus import I2CDisplayBus except ImportError: - pass + from displayio import FourWire + # from displayio import I2CDisplay as I2CDisplayBus import terminalio from adafruit_display_text import label import adafruit_displayio_ssd1305 @@ -82,23 +83,13 @@ Usage Example spi = board.SPI() oled_cs = board.D5 oled_dc = board.D6 - # Check if the version of CircuitPython being used still utilizes FourWise as a - # component of the displayio library - if "FourWire" in dir(displayio): - display_bus = displayio.FourWire( - spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=board.D9 - ) - else: - display_bus = fourwire.FourWire( - spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=board.D9 - ) + display_bus = FourWire( + spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=board.D9 + ) # Use for I2C # i2c = board.I2C() # - # For CircuitPython before 9.x - # display_bus = displayio.I2CDisplay(i2c, device_address=0x3c) - # For CircuitPython 9.x and later # display_bus = I2CDisplayBus(i1c, device_address=0x3c) WIDTH = 128 diff --git a/adafruit_displayio_ssd1305.py b/adafruit_displayio_ssd1305.py index fe0fceb..6544ceb 100644 --- a/adafruit_displayio_ssd1305.py +++ b/adafruit_displayio_ssd1305.py @@ -32,13 +32,11 @@ # Starting in CircuitPython 9.x fourwire will be a seperate internal library # rather than a component of the displayio library try: - # pylint: disable=useless-import-alias - from fourwire import FourWire as FourWire - from busdisplay import BusDisplay as BusDisplay - from i2cdisplaybus import I2CDisplayBus as I2CDisplayBus + from fourwire import FourWire + from busdisplay import BusDisplay + from i2cdisplaybus import I2CDisplayBus except ImportError: - # pylint: disable=useless-import-alias - from displayio import FourWire as FourWire + from displayio import FourWire from displayio import Display as BusDisplay from displayio import I2CDisplay as I2CDisplayBus diff --git a/examples/displayio_ssd1305_simpletest.py b/examples/displayio_ssd1305_simpletest.py index 49adf79..109ff05 100644 --- a/examples/displayio_ssd1305_simpletest.py +++ b/examples/displayio_ssd1305_simpletest.py @@ -12,9 +12,14 @@ # Starting in CircuitPython 9.x fourwire will be a seperate internal library # rather than a component of the displayio library try: - import fourwire + from fourwire import FourWire + + # Use for I2C + # from i2cdisplaybus import I2CDisplayBus except ImportError: - pass + from displayio import FourWire + + # from displayio import I2CDisplay as I2CDisplayBus import terminalio from adafruit_display_text import label import adafruit_displayio_ssd1305 @@ -28,21 +33,14 @@ spi = board.SPI() oled_cs = board.D5 oled_dc = board.D6 -# Check if the version of CircuitPython being used still utilizes FourWise as a -# component of the displayio library -if "FourWire" in dir(displayio): - display_bus = displayio.FourWire( - spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=oled_reset - ) -else: - display_bus = fourwire.FourWire( - spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=oled_reset - ) +display_bus = FourWire( + spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=oled_reset +) # Use for I2C # i2c = board.I2C() # uses board.SCL and board.SDA # i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller -# display_bus = displayio.I2CDisplay(i2c, device_address=0x3c, reset=oled_reset) +# display_bus = I2CDisplayBus(i2c, device_address=0x3c, reset=oled_reset) WIDTH = 128 HEIGHT = 64 # Change to 32 if needed