|
14 | 14 |
|
15 | 15 | **Hardware:**
|
16 | 16 |
|
| 17 | +* `Adafruit Matrix Portal <https://www.adafruit.com/product/4745>`_ |
17 | 18 | * `Adafruit Metro M4 Express AirLift <https://www.adafruit.com/product/4000>`_
|
18 | 19 | * `Adafruit RGB Matrix Shield <https://www.adafruit.com/product/2601>`_
|
19 | 20 | * `64x32 RGB LED Matrix <https://www.adafruit.com/product/2278>`_
|
@@ -46,25 +47,70 @@ class Matrix:
|
46 | 47 |
|
47 | 48 | """
|
48 | 49 |
|
49 |
| - # pylint: disable=too-few-public-methods |
| 50 | + # pylint: disable=too-few-public-methods,too-many-branches |
50 | 51 | def __init__(self, *, width=64, height=32, bit_depth=2, alt_addr_pins=None):
|
51 | 52 |
|
52 | 53 | if alt_addr_pins is not None:
|
53 | 54 | addr_pins = alt_addr_pins
|
| 55 | + elif hasattr(board, "MTX_ADDRA"): |
| 56 | + if height <= 16: |
| 57 | + addr_pins = [board.MTX_ADDRA, board.MTX_ADDRB, board.MTX_ADDRC] |
| 58 | + elif height <= 32: |
| 59 | + addr_pins = [ |
| 60 | + board.MTX_ADDRA, |
| 61 | + board.MTX_ADDRB, |
| 62 | + board.MTX_ADDRC, |
| 63 | + board.MTX_ADDRD, |
| 64 | + ] |
| 65 | + else: |
| 66 | + addr_pins = [ |
| 67 | + board.MTX_ADDRA, |
| 68 | + board.MTX_ADDRB, |
| 69 | + board.MTX_ADDRC, |
| 70 | + board.MTX_ADDRD, |
| 71 | + board.MTX_ADDRE, |
| 72 | + ] |
54 | 73 | else:
|
55 | 74 | addr_pins = [board.A0, board.A1, board.A2, board.A3]
|
56 | 75 |
|
| 76 | + if hasattr(board, "MTX_R1"): |
| 77 | + rgb_pins = [ |
| 78 | + board.MTX_R1, |
| 79 | + board.MTX_G1, |
| 80 | + board.MTX_B1, |
| 81 | + board.MTX_R2, |
| 82 | + board.MTX_G2, |
| 83 | + board.MTX_B2, |
| 84 | + ] |
| 85 | + else: |
| 86 | + rgb_pins = [board.D2, board.D3, board.D4, board.D5, board.D6, board.D7] |
| 87 | + |
| 88 | + if hasattr(board, "MTX_CLK"): |
| 89 | + clock_pin = board.MTX_CLK |
| 90 | + else: |
| 91 | + clock_pin = board.A4 |
| 92 | + |
| 93 | + if hasattr(board, "MTX_CLK"): |
| 94 | + latch_pin = board.MTX_LAT |
| 95 | + else: |
| 96 | + latch_pin = board.D10 |
| 97 | + |
| 98 | + if hasattr(board, "MTX_OE"): |
| 99 | + oe_pin = board.MTX_OE |
| 100 | + else: |
| 101 | + oe_pin = board.D9 |
| 102 | + |
57 | 103 | try:
|
58 | 104 | displayio.release_displays()
|
59 | 105 | matrix = rgbmatrix.RGBMatrix(
|
60 | 106 | width=width,
|
61 | 107 | height=height,
|
62 | 108 | bit_depth=bit_depth,
|
63 |
| - rgb_pins=[board.D2, board.D3, board.D4, board.D5, board.D6, board.D7], |
| 109 | + rgb_pins=rgb_pins, |
64 | 110 | addr_pins=addr_pins,
|
65 |
| - clock_pin=board.A4, |
66 |
| - latch_pin=board.D10, |
67 |
| - output_enable_pin=board.D9, |
| 111 | + clock_pin=clock_pin, |
| 112 | + latch_pin=latch_pin, |
| 113 | + output_enable_pin=oe_pin, |
68 | 114 | )
|
69 | 115 | self.display = framebufferio.FramebufferDisplay(matrix)
|
70 | 116 | except ValueError:
|
|
0 commit comments