Hello
I'm a novice to Arduino as will be apparent and could really use some insight. I've tried a few projects after many successful tutorial projects and small experiments I wanted to use a max7219 LED matrix that I got and see what it inspired me to make. At first I tried to make a dice roller for the sake of simplicity and it worked quite well...at first. Pick a flash several "Sprite Numbers" on the LED matrix until it slows and stops on one. At first it was activated by a button and after a few presses I just looped it because I just wanted to watch it. After about 5 or so minutes the LED matrix turned off. I reset the Arduino and it worked again, for another amount of time and turned off. Re-uploading caused it to start again, and again it stopped. I tried it with the button input again, and after so many presses, it also eventually stopped displaying.
I went back to looping and added an LED as an output to blink within the loop to see if it was still executing or running my code. It did, but the LED matrix would still turn off. I scrapped the project feeling that I must have made a coding mistake or a wiring mistake.
A few weeks later I tried another project a bit simpler. Sprite face that looked left and right and blinked randomly. New circuit, new code, same problem. The LED matrix just turns itself off. Tried with a battery powering my Arduino and same problem. The LED face code will hopefully posted below. (I haven't used a forum in a long time). I did try at one point a code where it randomly selected one of 6 LED outputs to turn on and never seemed to be an issue. So I assumed it was an issue with the max7219.
I did use a Sprite (library?) to help draw my animations. I thought that might have been the issue so I told it to count up with sprite numbers and looped it over from sprite 1 to sprite 20. Never turned the matrix off.
Thoughts? Questions? I appreciate it.
#include <Sprite.h> // Sprite before Matrix
#include <Matrix.h>
// DIN, CLK, LOAD, #chips
Matrix myLeds = Matrix(8, 10, 9, 1);
int rnd;
int rndDelay;
int action;
int cnt;
void setup() {
Sprite awake1 = Sprite(8, 8,
B00000000,
B00010000,
B00000000,
B00000000,
B00000000,
B00000000,
B00010000,
B00000000
);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake1);
delay(1000);
Sprite awake2 = Sprite(8, 8,
B00000000,
B00010000,
B00010000,
B00000000,
B00000000,
B00010000,
B00010000,
B00000000
);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake2);
delay(1000);
Sprite awake3 = Sprite(8, 8,
B00000000,
B00010000,
B00010000,
B10000000,
B10000000,
B00010000,
B00010000,
B00000000
);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake3);
delay(1000);
Sprite awake4 = Sprite(8, 8,
B00000000,
B00010000,
B10010000,
B10000000,
B10000000,
B10010000,
B00010000,
B00000000
);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake4);
delay(1000);
Sprite awake5 = Sprite(8, 8,
B00000000,
B00010000,
B10010000,
B10000000,
B10000000,
B10010000,
B00010000,
B00000000
);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake5);
delay(1000);
Sprite awake6 = Sprite(8, 8,
B00000000,
B00010000,
B00010001,
B00000001,
B00000001,
B00010001,
B00010000,
B00000000
);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake6);
delay(1000);
Sprite awake7 = Sprite(8, 8,
B00000000,
B00000000,
B00011001,
B00000001,
B00000001,
B00011001,
B00000000,
B00000000
);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake7);
delay(500);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake6);
delay(250);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake7);
delay(500);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake6);
delay(250);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, awake7);
Serial.begin(9600);
randomSeed(analogRead(A0));
Serial.println("Randomize!");
//sprite definitions
}
void loop() {
Sprite neutral = Sprite(8, 8,
B00000000,
B00000000,
B00011001,
B00000001,
B00000001,
B00011001,
B00000000,
B00000000
);
Sprite lookleft = Sprite(8, 8,
B00000000,
B00000000,
B00000001,
B00011001,
B00000001,
B00000001,
B00011000,
B00000000
);
Sprite lookright = Sprite(8, 8,
B00000000,
B00011000,
B00000001,
B00000001,
B00011001,
B00000001,
B00000000,
B00000000
);
Sprite blinkNeutral = Sprite(8, 8,
B00000000,
B00010000,
B00010001,
B00000001,
B00000001,
B00010001,
B00010000,
B00000000
);
//looking loop
rnd = random(4);
rndDelay = random(700) + 250;
rnd++;
for(int i = 0; i < rnd; i++){
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, neutral);
delay(rndDelay);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, lookleft);
delay(rndDelay);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, lookright);
delay(rndDelay);
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, neutral);
delay(rndDelay);
}
//blink
myLeds.clear();
myLeds.setBrightness(1);
myLeds.write(0, 0, blinkNeutral);
delay(500);
}
GUMPIPtoyoyupr.ino (3.41 KB)