Skip to content

Commit 5a13037

Browse files
committed
Added support for RGB Matrix Feather
1 parent 339bc32 commit 5a13037

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

adafruit_matrixportal/matrix.py

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,14 @@ class Matrix:
5050
# pylint: disable=too-few-public-methods,too-many-branches
5151
def __init__(self, *, width=64, height=32, bit_depth=2, alt_addr_pins=None):
5252

53-
if alt_addr_pins is not None:
54-
addr_pins = alt_addr_pins
55-
elif hasattr(board, "MTX_ADDRA"):
53+
# Detect the board type based on available pins
54+
if hasattr(board, "MTX_ADDRA"):
55+
# MatrixPortal M4
5656
addr_pins = [board.MTX_ADDRA, board.MTX_ADDRB, board.MTX_ADDRC]
5757
if height > 16:
5858
addr_pins.append(board.MTX_ADDRD)
5959
if height > 32:
6060
addr_pins.append(board.MTX_ADDRE)
61-
else:
62-
addr_pins = [board.A0, board.A1, board.A2, board.A3]
63-
64-
if hasattr(board, "MTX_R1"):
6561
rgb_pins = [
6662
board.MTX_R1,
6763
board.MTX_G1,
@@ -70,23 +66,33 @@ def __init__(self, *, width=64, height=32, bit_depth=2, alt_addr_pins=None):
7066
board.MTX_G2,
7167
board.MTX_B2,
7268
]
73-
else:
74-
rgb_pins = [board.D2, board.D3, board.D4, board.D5, board.D6, board.D7]
75-
76-
if hasattr(board, "MTX_CLK"):
7769
clock_pin = board.MTX_CLK
78-
else:
79-
clock_pin = board.A4
80-
81-
if hasattr(board, "MTX_CLK"):
8270
latch_pin = board.MTX_LAT
83-
else:
84-
latch_pin = board.D10
85-
86-
if hasattr(board, "MTX_OE"):
8771
oe_pin = board.MTX_OE
88-
else:
72+
elif hasattr(board, "D7"):
73+
# Metro/Grand Central Style Board
74+
if height <= 16:
75+
raise RuntimeError(
76+
"Pin A2 unavailable in this mode. Please specify alt_addr_pins."
77+
)
78+
addr_pins = [board.A0, board.A1, board.A2, board.A3]
79+
rgb_pins = [board.D2, board.D3, board.D4, board.D5, board.D6, board.D7]
80+
clock_pin = board.A4
81+
latch_pin = board.D10
8982
oe_pin = board.D9
83+
else:
84+
# Feather Style Board
85+
addr_pins = [board.A5, board.A4, board.A3]
86+
if height > 16:
87+
addr_pins.append(board.A2)
88+
rgb_pins = [board.D6, board.D5, board.D9, board.D11, board.D10, board.D12]
89+
clock_pin = board.D13
90+
latch_pin = board.D0
91+
oe_pin = board.D1
92+
93+
# Alternate Address Pins
94+
if alt_addr_pins is not None:
95+
addr_pins = alt_addr_pins
9096

9197
try:
9298
displayio.release_displays()

0 commit comments

Comments
 (0)