97
97
b"\x20 \x00 " # vertical (column) addressing mode (POR=0x20)
98
98
b"\xa0 \x00 " # segment remap = 1 (POR=0, down rotation)
99
99
b"\xc0 \x00 " # common output scan direction = 0 (0 to n-1 (POR=0))
100
- b"\xa8 \x01 \x3f " # multiplex ratio = 64 (POR=0x7F)
100
+ b"\xa8 \x01 \x7f " # multiplex ratio = 128 (POR=0x7F)
101
101
b"\xd3 \x01 \x60 " # set display offset mode = 0x60
102
102
# b"\xd5\x01\x51" # divide ratio/oscillator: divide by 2, fOsc (POR)
103
103
b"\xd9 \x01 \x22 " # pre-charge/dis-charge period mode: 2 DCLKs/2 DCLKs (POR)
@@ -132,7 +132,13 @@ def __init__(
132
132
rotation = 0 ,
133
133
** kwargs
134
134
):
135
+ rotation = (rotation + _ROTATION_OFFSET ) % 360
136
+ if rotation in (0 , 180 ):
137
+ multiplex = kwargs ["width" ] - 1
138
+ else :
139
+ multiplex = kwargs ["height" ] - 1
135
140
init_sequence = bytearray (_INIT_SEQUENCE )
141
+ init_sequence [16 ] = multiplex
136
142
init_sequence [19 ] = display_offset
137
143
super ().__init__ (
138
144
bus ,
@@ -144,7 +150,7 @@ def __init__(
144
150
data_as_commands = True , # every byte will have a command byte preceding
145
151
brightness_command = 0x81 ,
146
152
single_byte_bounds = True ,
147
- rotation = ( rotation + _ROTATION_OFFSET ) % 360 ,
153
+ rotation = rotation ,
148
154
# for sh1107 use column and page addressing.
149
155
# lower column command = 0x00 - 0x0F
150
156
# upper column command = 0x10 - 0x17
0 commit comments