@@ -50,18 +50,14 @@ class Matrix:
50
50
# pylint: disable=too-few-public-methods,too-many-branches
51
51
def __init__ (self , * , width = 64 , height = 32 , bit_depth = 2 , alt_addr_pins = None ):
52
52
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
56
56
addr_pins = [board .MTX_ADDRA , board .MTX_ADDRB , board .MTX_ADDRC ]
57
57
if height > 16 :
58
58
addr_pins .append (board .MTX_ADDRD )
59
59
if height > 32 :
60
60
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" ):
65
61
rgb_pins = [
66
62
board .MTX_R1 ,
67
63
board .MTX_G1 ,
@@ -70,23 +66,33 @@ def __init__(self, *, width=64, height=32, bit_depth=2, alt_addr_pins=None):
70
66
board .MTX_G2 ,
71
67
board .MTX_B2 ,
72
68
]
73
- else :
74
- rgb_pins = [board .D2 , board .D3 , board .D4 , board .D5 , board .D6 , board .D7 ]
75
-
76
- if hasattr (board , "MTX_CLK" ):
77
69
clock_pin = board .MTX_CLK
78
- else :
79
- clock_pin = board .A4
80
-
81
- if hasattr (board , "MTX_CLK" ):
82
70
latch_pin = board .MTX_LAT
83
- else :
84
- latch_pin = board .D10
85
-
86
- if hasattr (board , "MTX_OE" ):
87
71
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
89
82
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
90
96
91
97
try :
92
98
displayio .release_displays ()
0 commit comments