Open danielmader opened 2 months ago
@danielmader There are actually two problems going on here:
RGBMatrix
does not clean up sufficiently before the ValueErro
is thrown.So we need to fix problem 2, and you should try one less address line, due to problem 1.
@dhalbert Thank you for giving this issue attention!
I understand issue 1. However, I am still clueless how I can specify the different pinouts from the male plug of the MatrixPortal M4 board to the female socket of the WaveShare RGB matrix. I thought, the only way to do so is to pass the full list of address lines in the order of the pins.
I thought, the only way to do so is to pass the full list of address lines in the order of the pins.
You should only list as many address pins as are needed -- in this case, four pins. The alt address pins are just substituted for the ones that would be chosen by the library. With an Adafruit matrix the pins used would be [board.MTX_ADDRA, board.MTX_ADDRB, board.MTX_ADDRC, board.MTX_ADDRD]
. That is the default chosen by adafruit_matrixportal
based on the given parameters.
The screenshot you gave above for the Waveshare display is not the one I found: https://www.waveshare.com/rgb-matrix-p2.5-64x32.htm.
The one you show does not have a D
line, but the screenshot I am showing above does. Assuming mine is correct:
It looks like the Waveshare board has the B
on Adafruit'sD
line, and the E
line on Adafruit's B
line. The D
line is Adafruit's E
line. So try [board.MTX_ADDRA, board.MTX_ADDRD, board.MTX_ADDRC, board.MTX_ADDRB]
.
Thanks again, and yes, you were fully right about me posting a wrong pinout. I've taken it for this post only from an older version of the wiki without checking, please excuse.
Unfortunately, your suggestion still yields a broken display, at least when I use the higher-level class adafruit_matrixportal.matrix.Matrix
instead of your suggested
rgbmatrix.RGBMatrix
:
from adafruit_matrixportal.matrix import Matrix
[...]
addr_pins = [
board.MTX_ADDRA,
board.MTX_ADDRD,
board.MTX_ADDRC,
board.MTX_ADDRB
]
matrix = Matrix(width=64, height=32, alt_addr_pins=addr_pins)
display = matrix.display
I've posted this as a question to the Adafruit forum, too. Maybe the discussion should be continued there: https://forums.adafruit.com/viewtopic.php?t=213775
Maybe the discussion should be continued there: https://forums.adafruit.com/viewtopic.php?t=213775
I"ll follow up there for the pin order.
The core issue here to address is that exception failures in the RGBMatrix
constructor do not clean up properly, and cause crashes. Moving this forward to 9.x.x.
It turns out this diagram has several errors: I am going to get that fixed!
The schematic is correct, of course: The E jumper is explained here: https://learn.adafruit.com/adafruit-matrixportal-m4/pinouts#address-e-line-jumper-3072815
The pin-out of the Waveshare panel is the same as the Adafruit panels. Pinouts of our panels are discussed here: https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/new-wiring. Note you have to look for the 64x32 ones.
So you don't need to shuffle the address pins. I think these problems may be power-related, and will discuss that in the forums post.
I want to look into the safe mode reset in particular; I don't know about all the rest.
CircuitPython version
Code/REPL
Behavior
The used RGB matrix from WaveShare has a different pinout. Changing the relevant pins using a list for alt_addr_pins results in a hard crash:
Description
No response
Additional information
No response