40
40
41
41
class HT16K33 :
42
42
"""The base class for all displays. Contains common methods."""
43
- def __init__ (self , i2c , address = 0x70 ):
43
+ def __init__ (self , i2c , address = 0x70 , auto_write = True ):
44
44
self .i2c_device = i2c_device .I2CDevice (i2c , address )
45
45
self ._temp = bytearray (1 )
46
46
self ._buffer = bytearray (17 )
47
+ self ._auto_write = auto_write
47
48
self .fill (0 )
48
49
self ._write_cmd (_HT16K33_OSCILATOR_ON )
49
50
self ._blink_rate = None
@@ -85,6 +86,14 @@ def brightness(self, brightness):
85
86
self ._write_cmd (_HT16K33_CMD_BRIGHTNESS | brightness )
86
87
return None
87
88
89
+ @property
90
+ def auto_write (self ):
91
+ return self ._auto_write
92
+
93
+ @auto_write .setter
94
+ def auto_write (self , auto_write ):
95
+ self ._auto_write = auto_write
96
+
88
97
def show (self ):
89
98
"""Refresh the display and show the changes."""
90
99
with self .i2c_device :
@@ -97,6 +106,8 @@ def fill(self, color):
97
106
fill = 0xff if color else 0x00
98
107
for i in range (16 ):
99
108
self ._buffer [i + 1 ] = fill
109
+ if self ._auto_write :
110
+ self .show ()
100
111
101
112
def _pixel (self , x , y , color = None ):
102
113
mask = 1 << x
@@ -108,6 +119,8 @@ def _pixel(self, x, y, color=None):
108
119
else :
109
120
self ._buffer [(y * 2 ) + 1 ] &= ~ (mask & 0xff )
110
121
self ._buffer [(y * 2 ) + 2 ] &= ~ (mask >> 8 )
122
+ if self ._auto_write :
123
+ self .show ()
111
124
return None
112
125
113
126
def _set_buffer (self , i , value ):
0 commit comments