Skip to content

Commit 6678052

Browse files
authored
Merge pull request #45 from makermelissa/master
Added Tri-Color SSD1681 Driver
2 parents 1a46a0b + 1e85c91 commit 6678052

File tree

7 files changed

+48
-34
lines changed

7 files changed

+48
-34
lines changed

.pylintrc

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ ignore-patterns=
2222
#init-hook=
2323

2424
# Use multiple processes to speed up Pylint.
25-
# jobs=1
26-
jobs=2
25+
jobs=1
26+
# jobs=2
2727

2828
# List of plugins (as comma separated values of python modules names) to load,
2929
# usually to register additional checkers.
@@ -253,7 +253,7 @@ ignore-docstrings=yes
253253
ignore-imports=no
254254

255255
# Minimum lines number of a similarity.
256-
min-similarity-lines=4
256+
min-similarity-lines=50
257257

258258

259259
[BASIC]

adafruit_epd/ssd1681.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
`adafruit_epd.ssd1681` - Adafruit SSD1681 - ePaper display driver
77
====================================================================================
88
CircuitPython driver for Adafruit SSD1681 display breakouts
9-
* Author(s): Dean Miller, Ladyada
9+
* Author(s): Dean Miller, Ladyada, Melissa LeBlanc-Williams
1010
"""
1111

1212
import time
@@ -66,8 +66,6 @@
6666
_SSD1681_SET_RAMYCOUNT = const(0x4F)
6767
_SSD1681_NOP = const(0xFF)
6868

69-
_LUT_DATA = b'\x02\x02\x01\x11\x12\x12""fiiYX\x99\x99\x88\x00\x00\x00\x00\xf8\xb4\x13Q5QQ\x19\x01\x00' # pylint: disable=line-too-long
70-
7169

7270
class Adafruit_SSD1681(Adafruit_EPD):
7371
"""driver class for Adafruit SSD1681 ePaper display breakouts"""
@@ -85,16 +83,22 @@ def __init__(
8583
self._height = height
8684

8785
self._buffer1_size = int(width * height / 8)
86+
self._buffer2_size = int(width * height / 8)
8887

8988
if sramcs_pin:
9089
self._buffer1 = self.sram.get_view(0)
90+
self._buffer2 = self.sram.get_view(self._buffer1_size)
9191
else:
9292
self._buffer1 = bytearray((width * height) // 8)
93+
self._buffer2 = bytearray((width * height) // 8)
9394
self._framebuf1 = adafruit_framebuf.FrameBuffer(
9495
self._buffer1, width, height, buf_format=adafruit_framebuf.MHMSB
9596
)
97+
self._framebuf2 = adafruit_framebuf.FrameBuffer(
98+
self._buffer2, width, height, buf_format=adafruit_framebuf.MHMSB
99+
)
96100
self.set_black_buffer(0, True)
97-
self.set_color_buffer(0, True)
101+
self.set_color_buffer(1, False)
98102
# pylint: enable=too-many-arguments
99103

100104
def begin(self, reset=True):
@@ -158,12 +162,14 @@ def write_ram(self, index):
158162
0 or 1 for tri-color displays."""
159163
if index == 0:
160164
return self.command(_SSD1681_WRITE_BWRAM, end=False)
161-
raise RuntimeError("RAM index must be 0")
165+
if index == 1:
166+
return self.command(_SSD1681_WRITE_REDRAM, end=False)
167+
raise RuntimeError("RAM index must be 0 or 1")
162168

163169
def set_ram_address(self, x, y): # pylint: disable=unused-argument, no-self-use
164170
"""Set the RAM address location, not used on this chipset but required by
165171
the superclass"""
166172
# Set RAM X address counter
167173
self.command(_SSD1681_SET_RAMXCOUNT, bytearray([x]))
168174
# Set RAM Y address counter
169-
self.command(_SSD1681_SET_RAMYCOUNT, bytearray([y >> 8, y]))
175+
self.command(_SSD1681_SET_RAMYCOUNT, bytearray([y, y >> 8]))

examples/epd_bitmap.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from adafruit_epd.il0398 import Adafruit_IL0398 # pylint: disable=unused-import
1111
from adafruit_epd.ssd1608 import Adafruit_SSD1608 # pylint: disable=unused-import
1212
from adafruit_epd.ssd1675 import Adafruit_SSD1675 # pylint: disable=unused-import
13+
from adafruit_epd.ssd1681 import Adafruit_SSD1681 # pylint: disable=unused-import
1314

1415

1516
# create the spi device and pins we will need
@@ -22,16 +23,17 @@
2223

2324
# give them all to our driver
2425
print("Creating display")
25-
# display = Adafruit_SSD1608(200, 200, spi, # 1.54" HD mono display
26-
# display = Adafruit_SSD1675(122, 250, spi, # 2.13" HD mono display
27-
# display = Adafruit_IL91874(176, 264, spi, # 2.7" Tri-color display
28-
# display = Adafruit_IL0373(152, 152, spi, # 1.54" Tri-color display
29-
# display = Adafruit_IL0373(128, 296, spi, # 2.9" Tri-color display
30-
# display = Adafruit_IL0398(400, 300, spi, # 4.2" Tri-color display
26+
# display = Adafruit_SSD1608(200, 200, # 1.54" HD mono display
27+
# display = Adafruit_SSD1675(122, 250, # 2.13" HD mono display
28+
# display = Adafruit_SSD1681(200, 200, # 1.54" HD Tri-color display
29+
# display = Adafruit_IL91874(176, 264, # 2.7" Tri-color display
30+
# display = Adafruit_IL0373(152, 152, # 1.54" Tri-color display
31+
# display = Adafruit_IL0373(128, 296, # 2.9" Tri-color display
32+
# display = Adafruit_IL0398(400, 300, # 4.2" Tri-color display
3133
display = Adafruit_IL0373(
3234
104,
33-
212,
34-
spi, # 2.13" Tri-color display
35+
212, # 2.13" Tri-color display
36+
spi,
3537
cs_pin=ecs,
3638
dc_pin=dc,
3739
sramcs_pin=srcs,

examples/epd_blinka.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@
3131

3232
# give them all to our driver
3333
print("Creating display")
34-
# display = Adafruit_SSD1608(200, 200, spi, # 1.54" HD mono display
35-
# display = Adafruit_SSD1681(200, 200, spi, # 1.54" HD mono display (alt)
36-
# display = Adafruit_SSD1675(122, 250, spi, # 2.13" HD mono display
37-
# display = Adafruit_IL91874(176, 264, spi, # 2.7" Tri-color display
38-
# display = Adafruit_IL0373(152, 152, spi, # 1.54" Tri-color display
39-
# display = Adafruit_IL0373(128, 296, spi, # 2.9" Tri-color display
40-
# display = Adafruit_IL0398(400, 300, spi, # 4.2" Tri-color display
41-
# display = Adafruit_IL0373(104, 212, spi, # 2.13" Tri-color display
34+
# display = Adafruit_SSD1608(200, 200, # 1.54" HD mono display
35+
# display = Adafruit_SSD1681(200, 200, # 1.54" HD Tri-color display
36+
# display = Adafruit_SSD1675(122, 250, # 2.13" HD mono display
37+
# display = Adafruit_IL91874(176, 264, # 2.7" Tri-color display
38+
# display = Adafruit_IL0373(152, 152, # 1.54" Tri-color display
39+
# display = Adafruit_IL0373(128, 296, # 2.9" Tri-color display
40+
# display = Adafruit_IL0398(400, 300, # 4.2" Tri-color display
41+
# display = Adafruit_IL0373(104, 212, # 2.13" Tri-color display
4242
display = Adafruit_SSD1675B(
4343
122,
4444
250,

examples/epd_pillow_demo.py

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from adafruit_epd.il0398 import Adafruit_IL0398 # pylint: disable=unused-import
1616
from adafruit_epd.ssd1608 import Adafruit_SSD1608 # pylint: disable=unused-import
1717
from adafruit_epd.ssd1675 import Adafruit_SSD1675 # pylint: disable=unused-import
18+
from adafruit_epd.ssd1681 import Adafruit_SSD1681 # pylint: disable=unused-import
1819

1920
# First define some color constants
2021
WHITE = (0xFF, 0xFF, 0xFF)
@@ -39,6 +40,7 @@
3940
# give them all to our driver
4041
# display = Adafruit_SSD1608(200, 200, # 1.54" HD mono display
4142
# display = Adafruit_SSD1675(122, 250, # 2.13" HD mono display
43+
# display = Adafruit_SSD1681(200, 200, # 1.54" HD Tri-color display
4244
# display = Adafruit_IL91874(176, 264, # 2.7" Tri-color display
4345
# display = Adafruit_IL0373(152, 152, # 1.54" Tri-color display
4446
# display = Adafruit_IL0373(128, 296, # 2.9" Tri-color display

examples/epd_pillow_image.py

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from adafruit_epd.il0398 import Adafruit_IL0398 # pylint: disable=unused-import
1818
from adafruit_epd.ssd1608 import Adafruit_SSD1608 # pylint: disable=unused-import
1919
from adafruit_epd.ssd1675 import Adafruit_SSD1675 # pylint: disable=unused-import
20+
from adafruit_epd.ssd1681 import Adafruit_SSD1681 # pylint: disable=unused-import
2021

2122

2223
# create the spi device and pins we will need
@@ -30,6 +31,7 @@
3031
# give them all to our driver
3132
# display = Adafruit_SSD1608(200, 200, # 1.54" HD mono display
3233
# display = Adafruit_SSD1675(122, 250, # 2.13" HD mono display
34+
# display = Adafruit_SSD1681(200, 200, # 1.54" HD Tri-color display
3335
# display = Adafruit_IL91874(176, 264, # 2.7" Tri-color display
3436
# display = Adafruit_IL0373(152, 152, # 1.54" Tri-color display
3537
# display = Adafruit_IL0373(128, 296, # 2.9" Tri-color display

examples/epd_simpletest.py

+11-9
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from adafruit_epd.il0398 import Adafruit_IL0398 # pylint: disable=unused-import
1111
from adafruit_epd.ssd1608 import Adafruit_SSD1608 # pylint: disable=unused-import
1212
from adafruit_epd.ssd1675 import Adafruit_SSD1675 # pylint: disable=unused-import
13+
from adafruit_epd.ssd1681 import Adafruit_SSD1681 # pylint: disable=unused-import
1314

1415
# create the spi device and pins we will need
1516
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
@@ -19,18 +20,19 @@
1920
rst = digitalio.DigitalInOut(board.D9) # can be None to not use this pin
2021
busy = digitalio.DigitalInOut(board.D5) # can be None to not use this pin
2122

22-
# give them all to our driver
23+
# give them all to our drivers
2324
print("Creating display")
24-
# display = Adafruit_SSD1608(200, 200, spi, # 1.54" HD mono display
25-
# display = Adafruit_SSD1675(122, 250, spi, # 2.13" HD mono display
26-
# display = Adafruit_IL91874(176, 264, spi, # 2.7" Tri-color display
27-
# display = Adafruit_IL0373(152, 152, spi, # 1.54" Tri-color display
28-
# display = Adafruit_IL0373(128, 296, spi, # 2.9" Tri-color display
29-
# display = Adafruit_IL0398(400, 300, spi, # 4.2" Tri-color display
25+
# display = Adafruit_SSD1608(200, 200, # 1.54" HD mono display
26+
# display = Adafruit_SSD1675(122, 250, # 2.13" HD mono display
27+
# display = Adafruit_SSD1681(200, 200, # 1.54" HD Tri-color display
28+
# display = Adafruit_IL91874(176, 264, # 2.7" Tri-color display
29+
# display = Adafruit_IL0373(152, 152, # 1.54" Tri-color display
30+
# display = Adafruit_IL0373(128, 296, # 2.9" Tri-color display
31+
# display = Adafruit_IL0398(400, 300, # 4.2" Tri-color display
3032
display = Adafruit_IL0373(
3133
104,
32-
212,
33-
spi, # 2.13" Tri-color display
34+
212, # 2.13" Tri-color display
35+
spi,
3436
cs_pin=ecs,
3537
dc_pin=dc,
3638
sramcs_pin=srcs,

0 commit comments

Comments
 (0)