From 53bbdd8e342acbe59b3f7758adf0eb218b923a53 Mon Sep 17 00:00:00 2001 From: Martin Refseth <20230450+HDR@users.noreply.github.com> Date: Thu, 19 May 2022 21:45:02 +0200 Subject: [PATCH 1/6] Implement grayscale support --- adafruit_uc8151d.py | 63 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/adafruit_uc8151d.py b/adafruit_uc8151d.py index 6e8d00a..403b035 100644 --- a/adafruit_uc8151d.py +++ b/adafruit_uc8151d.py @@ -38,15 +38,65 @@ b"\x50\x01\x97" # CDI setting ) +_GRAYSCALE_START_SEQUENCE = ( + b"\x04\x80\xc8" # Power on + b"\x00\x01\xbf" # Panel setting + b"\x50\x01\x97" # CDI setting + # Common voltage + b"\x20\x2a" + b"\x00\x0A\x00\x00\x00\x01" + b"\x60\x14\x14\x00\x00\x01" + b"\x00\x14\x00\x00\x00\x01" + b"\x00\x13\x0A\x01\x00\x01" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + # White to White + b"\x21\x2a" + b"\x40\x0A\x00\x00\x00\x01" + b"\x90\x14\x14\x00\x00\x01" + b"\x10\x14\x0A\x00\x00\x01" + b"\xA0\x13\x01\x00\x00\x01" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + # Black to White + b"\x22\x2a" + b"\x40\x0A\x00\x00\x00\x01" + b"\x90\x14\x14\x00\x00\x01" + b"\x00\x14\x0A\x00\x00\x01" + b"\x99\x0B\x04\x04\x01\x01" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + # White to Black + b"\x23\x2a" + b"\x40\x0A\x00\x00\x00\x01" + b"\x90\x14\x14\x00\x00\x01" + b"\x00\x14\x0A\x00\x00\x01" + b"\x99\x0C\x01\x03\x04\x01" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + # Black to Black + b"\x24\x2a" + b"\x80\x0A\x00\x00\x00\x01" + b"\x90\x14\x14\x00\x00\x01" + b"\x20\x14\x0A\x00\x00\x01" + b"\x50\x13\x01\x00\x00\x01" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" + b"\x00\x00\x00\x00\x00\x00" +) + + _STOP_SEQUENCE = b"\x50\x01\xf7" b"\x07\x01\xA5" # CDI setting # Deep Sleep # pylint: disable=too-few-public-methods class UC8151D(displayio.EPaperDisplay): r"""UC8151D driver - :param bus: The data bus the display is on :param \**kwargs: See below - :Keyword Arguments: * *width* (``int``) -- Display width @@ -57,6 +107,11 @@ class UC8151D(displayio.EPaperDisplay): """ def __init__(self, bus, **kwargs): + if kwargs.get("grayscale", False): + print("grayscale is true") + start_sequence = bytearray(_GRAYSCALE_START_SEQUENCE) + else: + start_sequence = bytearray(_START_SEQUENCE) width = kwargs["width"] height = kwargs["height"] if "rotation" in kwargs and kwargs["rotation"] % 180 != 0: @@ -64,7 +119,7 @@ def __init__(self, bus, **kwargs): super().__init__( bus, - _START_SEQUENCE, + start_sequence, _STOP_SEQUENCE, **kwargs, ram_width=128, @@ -73,4 +128,4 @@ def __init__(self, bus, **kwargs): write_black_ram_command=0x13, write_color_ram_command=0x10, refresh_display_command=0x12, - ) + ) \ No newline at end of file From 282643cf3b1f91c955613c484604c4b84c16c9e5 Mon Sep 17 00:00:00 2001 From: Martin Refseth <20230450+HDR@users.noreply.github.com> Date: Thu, 19 May 2022 22:04:56 +0200 Subject: [PATCH 2/6] Remove print used for debugging --- adafruit_uc8151d.py | 1 - 1 file changed, 1 deletion(-) diff --git a/adafruit_uc8151d.py b/adafruit_uc8151d.py index 403b035..dced49b 100644 --- a/adafruit_uc8151d.py +++ b/adafruit_uc8151d.py @@ -108,7 +108,6 @@ class UC8151D(displayio.EPaperDisplay): def __init__(self, bus, **kwargs): if kwargs.get("grayscale", False): - print("grayscale is true") start_sequence = bytearray(_GRAYSCALE_START_SEQUENCE) else: start_sequence = bytearray(_START_SEQUENCE) From f662c7a356f7d3663d1cd95c553afc9c4a6c4fa8 Mon Sep 17 00:00:00 2001 From: Martin Refseth <20230450+HDR@users.noreply.github.com> Date: Fri, 20 May 2022 19:49:24 +0200 Subject: [PATCH 3/6] Update adafruit_uc8151d.py --- adafruit_uc8151d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/adafruit_uc8151d.py b/adafruit_uc8151d.py index dced49b..c7d9dd7 100644 --- a/adafruit_uc8151d.py +++ b/adafruit_uc8151d.py @@ -38,9 +38,9 @@ b"\x50\x01\x97" # CDI setting ) -_GRAYSCALE_START_SEQUENCE = ( - b"\x04\x80\xc8" # Power on - b"\x00\x01\xbf" # Panel setting +_GRAYSCALE_START_SEQUENCE = ( + b"\x04\x80\xc8" # Power on + b"\x00\x01\xbf" # Panel setting b"\x50\x01\x97" # CDI setting # Common voltage b"\x20\x2a" @@ -127,4 +127,4 @@ def __init__(self, bus, **kwargs): write_black_ram_command=0x13, write_color_ram_command=0x10, refresh_display_command=0x12, - ) \ No newline at end of file + ) From 6c30c9b4cddbc0c02818b6399db0046059f28202 Mon Sep 17 00:00:00 2001 From: Martin Refseth <20230450+HDR@users.noreply.github.com> Date: Fri, 20 May 2022 20:04:38 +0200 Subject: [PATCH 4/6] Update adafruit_uc8151d.py --- adafruit_uc8151d.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/adafruit_uc8151d.py b/adafruit_uc8151d.py index c7d9dd7..cf310d5 100644 --- a/adafruit_uc8151d.py +++ b/adafruit_uc8151d.py @@ -94,9 +94,11 @@ # pylint: disable=too-few-public-methods class UC8151D(displayio.EPaperDisplay): r"""UC8151D driver + :param bus: The data bus the display is on :param \**kwargs: See below + :Keyword Arguments: * *width* (``int``) -- Display width From 8de852277679751c787a3262e70cfaf27d1b5949 Mon Sep 17 00:00:00 2001 From: Martin Refseth <20230450+HDR@users.noreply.github.com> Date: Sat, 21 May 2022 17:56:34 +0200 Subject: [PATCH 5/6] Add example for grayscale displays --- examples/uc8151d_grayscale_test.py | 56 ++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 examples/uc8151d_grayscale_test.py diff --git a/examples/uc8151d_grayscale_test.py b/examples/uc8151d_grayscale_test.py new file mode 100644 index 0000000..7e1c678 --- /dev/null +++ b/examples/uc8151d_grayscale_test.py @@ -0,0 +1,56 @@ +import time +import board +import displayio +import busio +import adafruit_uc8151d + +displayio.release_displays() + +clk = board.GP10 +si = board.GP11 +dc = board.GP8 +cs = board.GP9 +rst = board.GP12 +busy = board.GP13 + +display_bus = displayio.FourWire( + busio.SPI(clk, si), command=dc, chip_select=cs, reset=rst, baudrate=1000000 +) + +time.sleep(1) + +display = adafruit_uc8151d.UC8151D( + display_bus, width=152, height=152, busy_pin=busy, rotation=180, grayscale=True +) + + +bitmap = displayio.Bitmap(152, 152, 4) + +# Draw Black +for x in range(0,152): + for y in range(0,38): + bitmap[x, y] = 0 +#Draw Dark Gray +for x in range(0,152): + for y in range(38,76): + bitmap[x, y] = 1 +#Draw Light Gray +for x in range(0,152): + for y in range(76,114): + bitmap[x, y] = 2 +#Draw White +for x in range(0,152): + for y in range(114,152): + bitmap[x, y] = 3 + +palette = displayio.Palette(4) +palette[0] = 0x000000 # Black +palette[1] = 0x404040 # Dark Gray +palette[2] = 0x808080 # Light Gray +palette[3] = 0xFFFFFF # White + +g = displayio.Group() +t = displayio.TileGrid(bitmap, pixel_shader=palette) +g.append(t) +display.show(g) +display.refresh() \ No newline at end of file From 42c745b3b6f89354c83756be4eceea2578437dd5 Mon Sep 17 00:00:00 2001 From: Martin Refseth <20230450+HDR@users.noreply.github.com> Date: Sat, 21 May 2022 18:05:12 +0200 Subject: [PATCH 6/6] Add Copyrighttext and license identifier --- examples/uc8151d_grayscale_test.py | 44 +++++++++++++++++++----------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/examples/uc8151d_grayscale_test.py b/examples/uc8151d_grayscale_test.py index 7e1c678..71b8316 100644 --- a/examples/uc8151d_grayscale_test.py +++ b/examples/uc8151d_grayscale_test.py @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2022 Martin Refseth, written for Adafruit Industries +# +# SPDX-License-Identifier: Unlicense + +"""Simple test script for 1.54" 152x152 grayscale display. + +Supported products: + * 1.54" Grayscale Display (GDEW0154T8D) + """ +# pylint: disable=no-member + import time import board import displayio @@ -6,6 +17,7 @@ displayio.release_displays() +# Pinout intended for use with a Raspberry Pi Pico clk = board.GP10 si = board.GP11 dc = board.GP8 @@ -27,30 +39,30 @@ bitmap = displayio.Bitmap(152, 152, 4) # Draw Black -for x in range(0,152): - for y in range(0,38): +for x in range(0, 152): + for y in range(0, 38): bitmap[x, y] = 0 -#Draw Dark Gray -for x in range(0,152): - for y in range(38,76): +# Draw Dark Gray +for x in range(0, 152): + for y in range(38, 76): bitmap[x, y] = 1 -#Draw Light Gray -for x in range(0,152): - for y in range(76,114): +# Draw Light Gray +for x in range(0, 152): + for y in range(76, 114): bitmap[x, y] = 2 -#Draw White -for x in range(0,152): - for y in range(114,152): +# Draw White +for x in range(0, 152): + for y in range(114, 152): bitmap[x, y] = 3 palette = displayio.Palette(4) -palette[0] = 0x000000 # Black -palette[1] = 0x404040 # Dark Gray -palette[2] = 0x808080 # Light Gray -palette[3] = 0xFFFFFF # White +palette[0] = 0x000000 # Black +palette[1] = 0x404040 # Dark Gray +palette[2] = 0x808080 # Light Gray +palette[3] = 0xFFFFFF # White g = displayio.Group() t = displayio.TileGrid(bitmap, pixel_shader=palette) g.append(t) display.show(g) -display.refresh() \ No newline at end of file +display.refresh()