From 1ca63a47c87ba4aea1145ba423d4ae2b6edffeec Mon Sep 17 00:00:00 2001 From: Kattni Date: Sat, 23 Dec 2017 20:11:33 -0500 Subject: [PATCH 1/3] Update to SSD1331 driver --- adafruit_rgb_display/ssd1331.py | 92 +++++++++++++++++++++------------ 1 file changed, 58 insertions(+), 34 deletions(-) diff --git a/adafruit_rgb_display/ssd1331.py b/adafruit_rgb_display/ssd1331.py index 801479b..c2668bf 100644 --- a/adafruit_rgb_display/ssd1331.py +++ b/adafruit_rgb_display/ssd1331.py @@ -1,4 +1,9 @@ +"""A simple driver for the SSD1331-based displays.""" from adafruit_rgb_display.rgb import DisplaySPI +from micropython import const + +__version__ = "0.0.0-auto.0" +__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_RGB_Display.git" _DRAWLINE = const(0x21) @@ -37,23 +42,31 @@ class SSD1331(DisplaySPI): """ A simple driver for the SSD1331-based displays. - >>> import busio - >>> import digitalio - >>> import board - >>> from adafruit_rgb_display import color565 - >>> import adafruit_rgb_display.ssd1331 as ssd1331 - >>> spi = busio.SPI(clock=board.SCK, MOSI=board.MOSI, MISO=board.MISO) - >>> display = ssd1331.SSD1331(spi, cs=digitalio.DigitalInOut(board.GPIO0), dc=digitalio.DigitalInOut(board.GPIO15), rst=digitalio.DigitalInOut(board.GPIO16)) - >>> display.fill(0x7521) - >>> display.pixel(32, 32, 0) ->>> -from machine import Pin, HSPI -import ssd1331 -#spi = SPI(mosi=Pin(13), sck=Pin(14), polarity=1, phase=1) -spi = HSPI(polarity=1, phase=1) -display = ssd1331.SSD1331(spi, dc=Pin(2), cs=Pin(15), rst=Pin(16)) -display.fill(0x7521) -display.pixel(32, 32, 0) + .. code-block:: python + + import busio + import digitalio + import board + from adafruit_rgb_display import color565 + import adafruit_rgb_display.ssd1331 as ssd1331 + spi = busio.SPI(clock=board.SCK, MOSI=board.MOSI, MISO=board.MISO) + display = ssd1331.SSD1331(spi, cs=digitalio.DigitalInOut(board.GPIO0), + dc=digitalio.DigitalInOut(board.GPIO15), + rst=digitalio.DigitalInOut(board.GPIO16)) + + display.fill(0x7521) + display.pixel(32, 32, 0) + + .. code-block:: python + + from machine import Pin, HSPI + import ssd1331 + # spi = SPI(mosi=Pin(13), sck=Pin(14), polarity=1, phase=1) + spi = HSPI(polarity=1, phase=1) + display = ssd1331.SSD1331(spi, dc=Pin(2), cs=Pin(15), rst=Pin(16)) + + display.fill(0x7521) + display.pixel(32, 32, 0) """ _COLUMN_SET = _SETCOLUMN _PAGE_SET = _SETROW @@ -62,31 +75,42 @@ class SSD1331(DisplaySPI): _INIT = ( (_DISPLAYOFF, b''), (_LOCK, b'\x0b'), - (_SETREMAP, b'\x72'), # RGB Color + (_SETREMAP, b'\x72'), # RGB Color (_STARTLINE, b'\x00'), (_DISPLAYOFFSET, b'\x00'), (_NORMALDISPLAY, b''), -# (_FILL, b'\x01'), + # (_FILL, b'\x01'), -# (_PHASEPERIOD, b'\x31'), -# (_SETMULTIPLEX, b'\x3f'), -# (_SETMASTER, b'\x8e'), -# (_POWERMODE,b'\x0b'), -# (_PRECHARGE, b'\x31'), #;//0x1F - 0x31 -# (_CLOCKDIV, b'\xf0'), -# (_VCOMH, b'\x3e'), #;//0x3E - 0x3F -# (_MASTERCURRENT, b'\x06'), # ;//0x06 - 0x0F -# (_PRECHARGEA, b'\x64'), -# (_PRECHARGEB, b'\x78'), -# (_PRECHARGEC, b'\x64'), -# (_PRECHARGELEVEL, b'\x3a'), # 0x3A - 0x00 -# (_CONTRASTA, b'\x91'), #//0xEF - 0x91 -# (_CONTRASTB, b'\x50'), #;//0x11 - 0x50 -# (_CONTRASTC, b'\x7d'), #;//0x48 - 0x7D + (_PHASEPERIOD, b'\x31'), + (_SETMULTIPLEX, b'\x3f'), + (_SETMASTER, b'\x8e'), + (_POWERMODE, b'\x0b'), + (_PRECHARGE, b'\x31'), # ;//0x1F - 0x31 + (_CLOCKDIV, b'\xf0'), + (_VCOMH, b'\x3e'), # ;//0x3E - 0x3F + (_MASTERCURRENT, b'\x0c'), # ;//0x06 - 0x0F + (_PRECHARGEA, b'\x64'), + (_PRECHARGEB, b'\x78'), + (_PRECHARGEC, b'\x64'), + (_PRECHARGELEVEL, b'\x3a'), # 0x3A - 0x00 + (_CONTRASTA, b'\x91'), # //0xEF - 0x91 + (_CONTRASTB, b'\x50'), # ;//0x11 - 0x50 + (_CONTRASTC, b'\x7d'), # ;//0x48 - 0x7D (_DISPLAYON, b''), ) _ENCODE_PIXEL = ">H" _ENCODE_POS = ">BB" + # pylint: disable-msg=useless-super-delegation, too-many-arguments def __init__(self, spi, dc, cs, rst=None, width=96, height=64): super().__init__(spi, dc, cs, rst, width, height) + + # pylint: disable-msg=no-member + def write(self, command=None, data=None): + """write procedure specific to SSD1331""" + self.dc_pin.value = command is None + with self.spi_device as spi: + if command is not None: + spi.write(bytearray([command])) + if data is not None: + spi.write(data) From e86adf03f12658acfa0e64e115313527f7da7d01 Mon Sep 17 00:00:00 2001 From: Kattni Date: Thu, 28 Dec 2017 14:37:30 -0500 Subject: [PATCH 2/3] updated with requested changes removed micropython code block, included pylint comments --- adafruit_rgb_display/ssd1331.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/adafruit_rgb_display/ssd1331.py b/adafruit_rgb_display/ssd1331.py index c2668bf..59c4fad 100644 --- a/adafruit_rgb_display/ssd1331.py +++ b/adafruit_rgb_display/ssd1331.py @@ -57,16 +57,6 @@ class SSD1331(DisplaySPI): display.fill(0x7521) display.pixel(32, 32, 0) - .. code-block:: python - - from machine import Pin, HSPI - import ssd1331 - # spi = SPI(mosi=Pin(13), sck=Pin(14), polarity=1, phase=1) - spi = HSPI(polarity=1, phase=1) - display = ssd1331.SSD1331(spi, dc=Pin(2), cs=Pin(15), rst=Pin(16)) - - display.fill(0x7521) - display.pixel(32, 32, 0) """ _COLUMN_SET = _SETCOLUMN _PAGE_SET = _SETROW @@ -102,10 +92,13 @@ class SSD1331(DisplaySPI): _ENCODE_POS = ">BB" # pylint: disable-msg=useless-super-delegation, too-many-arguments + # super required to allow override of default values + # All arguments needed due to driver requiring all the given data to function def __init__(self, spi, dc, cs, rst=None, width=96, height=64): super().__init__(spi, dc, cs, rst, width, height) # pylint: disable-msg=no-member + # dc_pin is inherited from DisplaySPI def write(self, command=None, data=None): """write procedure specific to SSD1331""" self.dc_pin.value = command is None From e0c307ab6862fe0cc480b6b0a94027a11d6faeac Mon Sep 17 00:00:00 2001 From: Kattni Date: Thu, 28 Dec 2017 14:51:31 -0500 Subject: [PATCH 3/3] update to match master --- adafruit_rgb_display/ssd1331.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/adafruit_rgb_display/ssd1331.py b/adafruit_rgb_display/ssd1331.py index 59c4fad..4cc3a1c 100644 --- a/adafruit_rgb_display/ssd1331.py +++ b/adafruit_rgb_display/ssd1331.py @@ -97,11 +97,9 @@ class SSD1331(DisplaySPI): def __init__(self, spi, dc, cs, rst=None, width=96, height=64): super().__init__(spi, dc, cs, rst, width, height) - # pylint: disable-msg=no-member - # dc_pin is inherited from DisplaySPI def write(self, command=None, data=None): """write procedure specific to SSD1331""" - self.dc_pin.value = command is None + self.dc.value = command is None with self.spi_device as spi: if command is not None: spi.write(bytearray([command]))