6
6
`adafruit_epd.ssd1681` - Adafruit SSD1681 - ePaper display driver
7
7
====================================================================================
8
8
CircuitPython driver for Adafruit SSD1681 display breakouts
9
- * Author(s): Dean Miller, Ladyada
9
+ * Author(s): Dean Miller, Ladyada, Melissa LeBlanc-Williams
10
10
"""
11
11
12
12
import time
66
66
_SSD1681_SET_RAMYCOUNT = const (0x4F )
67
67
_SSD1681_NOP = const (0xFF )
68
68
69
- _LUT_DATA = b'\x02 \x02 \x01 \x11 \x12 \x12 ""fiiYX\x99 \x99 \x88 \x00 \x00 \x00 \x00 \xf8 \xb4 \x13 Q5QQ\x19 \x01 \x00 ' # pylint: disable=line-too-long
70
-
71
69
72
70
class Adafruit_SSD1681 (Adafruit_EPD ):
73
71
"""driver class for Adafruit SSD1681 ePaper display breakouts"""
@@ -85,16 +83,22 @@ def __init__(
85
83
self ._height = height
86
84
87
85
self ._buffer1_size = int (width * height / 8 )
86
+ self ._buffer2_size = int (width * height / 8 )
88
87
89
88
if sramcs_pin :
90
89
self ._buffer1 = self .sram .get_view (0 )
90
+ self ._buffer2 = self .sram .get_view (self ._buffer1_size )
91
91
else :
92
92
self ._buffer1 = bytearray ((width * height ) // 8 )
93
+ self ._buffer2 = bytearray ((width * height ) // 8 )
93
94
self ._framebuf1 = adafruit_framebuf .FrameBuffer (
94
95
self ._buffer1 , width , height , buf_format = adafruit_framebuf .MHMSB
95
96
)
97
+ self ._framebuf2 = adafruit_framebuf .FrameBuffer (
98
+ self ._buffer2 , width , height , buf_format = adafruit_framebuf .MHMSB
99
+ )
96
100
self .set_black_buffer (0 , True )
97
- self .set_color_buffer (0 , True )
101
+ self .set_color_buffer (1 , False )
98
102
# pylint: enable=too-many-arguments
99
103
100
104
def begin (self , reset = True ):
@@ -158,12 +162,14 @@ def write_ram(self, index):
158
162
0 or 1 for tri-color displays."""
159
163
if index == 0 :
160
164
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" )
162
168
163
169
def set_ram_address (self , x , y ): # pylint: disable=unused-argument, no-self-use
164
170
"""Set the RAM address location, not used on this chipset but required by
165
171
the superclass"""
166
172
# Set RAM X address counter
167
173
self .command (_SSD1681_SET_RAMXCOUNT , bytearray ([x ]))
168
174
# 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 ]))
0 commit comments