Hi Leute,
ich hab ein Problem mit meinem Code.
Habe mir anhand der Anleitungen im Internet einen LED Tisch gebaut, mit 25 Feldern.
Das ganze wird über einen MAX7219 gesteuert.
Soweit funktioniert alles einwandfrei, allerdings habe ich ein Problem.
Zum besseren Verständnis habe ich den Code mal angehängt.
Ich definiere mir am Anfang einen neuen Typ Frame, welcher selbst ein Bytearray der Länge 5 ist, was einem angezeigten "Bild" entspricht, je 1 Byte für jede Zeile.
Die gesamte Animation habe ich dann in einem Frame-Array gespeichert.
Der Code läuft auch einwandfrei, sobald das Array der Frames allerdings größer als 350 wird, sprich ab 351, kompiliert er den Code zwar durch, danach macht der Arduino aber nur wirre Sachen.
Die Animation zeigt falsche Frames an, und die über Pin 7 un 8 angesprochenen Schalter, um zwischen Dauerbeleuchtung, Animation, und einem Testbild zu schalten zeigen keinerlei Wirkung mehr.
Hat jemand etwas ähnliches schonma gehabt?
Ich versteh nicht ganz wieso das genau bei einer Länge von 351 verrückt spielt.
Danke euch!
#include <LedControl.h>
LedControl lc=LedControl(12,11,10,1);
int PinMusicSync = 7;
int PinAnimation = 8;
typedef byte Frame[5];
Frame Animation2[350] = {
{B10101,
B01010,
B10101,
B01010,
B10101},
{B01010,
B10101,
B01010,
B10101,
B01010},
{B11011,
B11011,
B00000,
B11011,
B11011},
....
};
void setup() {
lc.shutdown(0,false);
lc.setIntensity(0,15);
lc.clearDisplay(0);
Serial.begin(9600);
pinMode(PinMusicSync, INPUT);
pinMode(PinAnimation, INPUT);
}
void playAnimation2()
{
for(int k=0; k<350; k++)
{
for(int m=0; m<5; m++)
{
lc.setRow(0,m,Animation2[k][m]);
}
delay(700);
}
}
void loop() {
int buttonState1 = digitalRead(PinMusicSync);
int buttonState2 = digitalRead(PinAnimation);
if(buttonState1 == 1)
{
//TESTBILD
lc.setRow(0,0,B10001);
lc.setRow(0,1,B11011);
lc.setRow(0,2,B10101);
lc.setRow(0,3,B10001);
lc.setRow(0,4,B10001);
}
else if(buttonState2 == 1)
{
playAnimation2();
}
else
{
//
lc.setRow(0,0,B11111);
lc.setRow(0,1,B11111);
lc.setRow(0,2,B11111);
lc.setRow(0,3,B11111);
lc.setRow(0,4,B11111);
}
}