I've been having this problem since buying the products late 2021. Essentially, the lighting up of the matrices is extremely flaky. All connections seem good (have tested each with a multimeter's continuity function), the board seems to be working (LED blink example works each time I test it), and all LED matrices and their backpacks successfully turn on...but only when they feel like it.
What happens is that I'll plug the header pins into the board via jumper cables (have tested with multiple sets, same issue), and then plug the board into the computer via USB to power it. Green LED comes on, as does the yellow "RX" LED. And then nothing happens for awhile. Sometimes, (I'd say maybe 20% of the time), it'll light up properly, but it takes literal minutes to do so. Yellow RX light goes off at this time. This is usually the case with just one matrix plugged in.
The usual case is that it'll just hang like this seemingly indefinitely. At least 10 minutes at my last test. Sometimes, I'd say over 50% of the time, it'll magically work if I take the VCC to 5v jumper cable out, wait a second, then plug it back in. This will fix it if single or multiple LED backpacks are attached. Sometimes, this fix only works if I take the cable out, hit reset, wait about 10 seconds, then plug it back in.
I've tested this with known good code (the example code on the backpack tutorial article), same issue.
In short, it works, but it's flaky as heck and I can't pin down if my cables are just ALL bad, there's a loose connection somewhere that somehow fooled my multimeter, or if I'm just seriously impatient and it really does take a long time to finish up and light up the LEDs.
To fully elaborate on the specs, It's a Metro M4 Airlift Lite. Bootloader at version 3.13. Using Arduino IDE, latest version. All libraries updated this morning to most recent stable version. LEDs are Adafruit bought on either an 8x8 or 8x16 backpack, again Adafruit bought. Jumper cables are admittedly a bit cheap but tested with multimeter and used very gently each time.
Below is the example code I'm using as of this writing just to triple check each matrix is working (as they're all now installed pending wiring). Apologies for the odd matrix names, it's for a costume. Uploaded is three pictures. Close up of the board, close up of the backpack, and zoomed out a bit to show the whole shebang.
EDIT: While I was writing this, the LED matrix shown in the photos turned on. I had a stopwatch going, it took about 3 minutes. I mention this as the LED blink example loads, completes and runs in under a second.
Code: Select all
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
#include <Wire.h>
Adafruit_8x8matrix NoseL = Adafruit_8x8matrix();
Adafruit_8x8matrix NoseR = Adafruit_8x8matrix();
Adafruit_8x16matrix EyeL = Adafruit_8x16matrix();
Adafruit_8x16matrix EyeR = Adafruit_8x16matrix();
Adafruit_8x16matrix MawL1 = Adafruit_8x16matrix();
Adafruit_8x16matrix MawL2 = Adafruit_8x16matrix();
Adafruit_8x16matrix MawR1 = Adafruit_8x16matrix();
Adafruit_8x16matrix MawR2 = Adafruit_8x16matrix();
void setup() {
NoseL.begin (0x71);
NoseR.begin (0x70);
EyeL.begin (0x72);
EyeR.begin (0x73);
MawL1.begin (0x74);
MawL2.begin (0x75);
MawR1.begin (0x76);
MawR2.begin (0x77);
}
void loop() {
// put your main code here, to run repeatedly:
NoseL.drawRect(0, 0, 8, 8, HIGH);
NoseR.drawRect(0, 0, 8, 8, HIGH);
EyeL.drawRect (0, 0, 8, 16, HIGH);
EyeR.drawRect (0, 0, 8, 16, HIGH);
MawL1.drawRect (0, 0, 8, 16, HIGH);
MawL2.drawRect (0, 0, 8, 16, HIGH);
MawR1.drawRect (0, 0, 8, 16, HIGH);
MawR2.drawRect (0, 0, 8, 16, HIGH);
NoseL.writeDisplay();
NoseR.writeDisplay();
EyeL.writeDisplay();
EyeR.writeDisplay();
MawL1.writeDisplay();
MawL2.writeDisplay();
MawR1.writeDisplay();
MawR2.writeDisplay();
}