Skip to content

Commit e0abfba

Browse files
authored
Merge pull request #23 from makermelissa/master
Added support for RGB Matrix FeatherWing
2 parents a2fdbe1 + e52041e commit e0abfba

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

adafruit_matrixportal/matrix.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
2727
"""
2828

29+
import os
2930
import board
3031
import displayio
3132
import rgbmatrix
@@ -50,18 +51,13 @@ class Matrix:
5051
# pylint: disable=too-few-public-methods,too-many-branches
5152
def __init__(self, *, width=64, height=32, bit_depth=2, alt_addr_pins=None):
5253

53-
if alt_addr_pins is not None:
54-
addr_pins = alt_addr_pins
55-
elif hasattr(board, "MTX_ADDRA"):
54+
if "Matrix Portal M4" in os.uname().machine:
55+
# MatrixPortal M4 Board
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,24 +66,34 @@ 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
72+
elif "Feather" in os.uname().machine:
73+
print("Feather Detected")
74+
# Feather Style Board
75+
if height > 16:
76+
addr_pins.append(board.A2)
77+
rgb_pins = [board.D6, board.D5, board.D9, board.D11, board.D10, board.D12]
78+
clock_pin = board.D13
79+
latch_pin = board.D0
80+
oe_pin = board.D1
8881
else:
82+
# Metro/Grand Central Style Board
83+
if alt_addr_pins is None and height <= 16:
84+
raise RuntimeError(
85+
"Pin A2 unavailable in this mode. Please specify alt_addr_pins."
86+
)
87+
addr_pins = [board.A0, board.A1, board.A2, board.A3]
88+
rgb_pins = [board.D2, board.D3, board.D4, board.D5, board.D6, board.D7]
89+
clock_pin = board.A4
90+
latch_pin = board.D10
8991
oe_pin = board.D9
9092

93+
# Alternate Address Pins
94+
if alt_addr_pins is not None:
95+
addr_pins = alt_addr_pins
96+
9197
try:
9298
displayio.release_displays()
9399
matrix = rgbmatrix.RGBMatrix(

0 commit comments

Comments
 (0)