Danke für die Hilfe, Leute.
Wenn ich den Code von stim0r0l im GNU compiler laufen lasse, dann werden auch nur die erste 4 digits ausgespuckt
- Displaying number 1 (4) :6 9 10 20
Da ist doch was faul, resp. so kompliziert kann das doch nicht sein
Ausserdem muss ich die Zahlen im Array als integer oder bytes haben, da ich sie nachher einer Funktion der FastLED Library übergeben muss. Ok, ich könnte sie mit "atoi" auch vorher kurz konvertieren.
Um auf den Punkt zu kommen, was ich überhaupt machen will.
Ich habe eine header Datei gemacht mit einer Array Matrix für die Zahlen:
- #ifndef XMas14_RGB_h
- #define XMas14_RGB_h
-
- // single number of first digit
- byte one_[] = {3,13,14,16,26,30,41,45};
- byte two_[] = {1,2,3,12,17,26,27,28,42,43,44,45,46};
- byte three_[] = {1,2,3,12,17,26,27,31,40,43,44,45};
-
- // single number of second digit
- byte zero[] = {5,6,8,11,18,21,22,25,32,35,36,39,48,49};
- byte one[] = {6,9,10,20,23,34,37,49};
- byte two[] = {4,5,6,8,21,23,24,32,39,47,48,49,50};
- byte three[] = {4,5,6,8,21,23,24,35,36,47,48,49};
- byte four[] = {4,7,8,11,18,21,22,23,24,25,35,36,50};
- byte five[] = {4,5,6,7,11,18,23,24,25,35,36,47,48,49};
- byte six[] = {5,6,11,18,23,24,25,32,35,36,39,48,49};
- byte seven[] = {4,5,6,7,8,21,23,33,38,48};
- byte eight[] = {5,6,8,11,18,21,23,24,32,35,36,39,48,49};
- byte nine[] = {5,6,8,11,18,21,22,23,24,35,36,47,48,49};
-
- // 2 digit numbers
- byte ten[] = {*one_,*zero};
- byte eleven[] = {*one_,*one};
- byte twelve[] = {*one_,*two};
- byte thirteen[] ={*one_,*three};
- byte fourteen[] = {*one_,*four};
- byte fifteen[] = {*one_,*five};
- byte sixteen[] = {*one_,*six};
- byte seventeen[] = {*one_,*seven};
- byte eighteen[] = {*one_,*eight};
- byte nineteen[] = {*one_,*nine};
-
- byte twenty[] = {*two_,*zero};
- byte twentyone[] = {*two_,*one};
- byte twentytwo[] = {*two_,*two};
- byte twentythree[] = {*two_,*three};
- byte twentyfour[] = {*two_,*four};
- byte twentyfive[] = {*two_,*five};
- byte twentysix[] = {*two_,*six};
- byte twentyseven[] = {*two_,*seven};
- byte twentyeight[] = {*two_,*eight};
- byte twentynine[] = {*two_,*nine};
-
- byte thirty[] = {*three_,*zero};
- byte thirtyone[] = {*three_,*one};
-
- /*
- Function to get array of LED to illuminate based on the integer given.
- Return the pointer to the byte array containing the integers for the LED.
- */
- byte* getNumbers(byte today) {
- switch (today) {
- case 0: return zero; break;
- case 1: return one; break;
- case 2: return two; break;
- case 3: return three; break;
- case 4: return four; break;
- case 5: return five; break;
- case 6: return six; break;
- case 7: return seven; break;
- case 8: return eight; break;
- case 9: return nine; break;
- case 10: return ten; break;
- case 11: return eleven; break;
- case 12: return twelve; break;
- case 13: return thirteen; break;
- case 14: return fourteen; break;
- case 15: return fifteen; break;
- case 16: return sixteen; break;
- case 17: return seventeen; break;
- case 18: return eighteen; break;
- case 19: return nineteen; break;
- case 20: return twenty; break;
- case 21: return twentyone; break;
- case 22: return twentytwo; break;
- case 23: return twentythree; break;
- case 24: return twentyfour; break;
- case 25: return twentyfive; break;
- case 26: return twentysix; break;
- case 27: return twentyseven; break;
- case 28: return twentyeight; break;
- case 29: return twentynine; break;
- case 30: return thirty; break;
- case 31: return thirtyone; break;
- }
- }
- #endif //XMas14_RGB.h
Alles anzeigen
Im .ino File soll dann im Prinzip das von weiter oben passieren:
- byte* numArray = getNumbers(today);
- for (byte i = 0; i < sizeof(numArray); i++) {
- led = numArray[i];
- Serial.print(led); Serial.print(" ");
- fadeInRandColour(led);
- }
Ihr seht auch, dass ich für die 2 Stelligen Zahlen auch gerne die Arrays zusammenfügen möchte. Aber ich glaube so geht das auch nicht. Ich kenne strcat um Strings zu concatinaten, aber wie kann man das einfach mit Arrays machen? Muss ich da jedes Element auslesen und dann beim anderen Array anfügen?!?
Ich werde das Phänomen mal noch im Arduino Forum posten