26
26
27
27
"""
28
28
29
+ import os
29
30
import board
30
31
import displayio
31
32
import rgbmatrix
@@ -50,18 +51,13 @@ class Matrix:
50
51
# pylint: disable=too-few-public-methods,too-many-branches
51
52
def __init__ (self , * , width = 64 , height = 32 , bit_depth = 2 , alt_addr_pins = None ):
52
53
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
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,24 +66,34 @@ 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
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
88
81
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
89
91
oe_pin = board .D9
90
92
93
+ # Alternate Address Pins
94
+ if alt_addr_pins is not None :
95
+ addr_pins = alt_addr_pins
96
+
91
97
try :
92
98
displayio .release_displays ()
93
99
matrix = rgbmatrix .RGBMatrix (
0 commit comments