Stap 5: Programm
Ik kreeg deze code van de tronixstuff.com site en kunt u andere voorbeelden van de code als de beschikbare debug-code er, dat zeer nuttig om te begrijpen wat er gaande was was wanneer dingen waren niet werkt zoals verondersteld toe te schrijven aan de 3 kortgesloten kolommen die ik hierboven vermeld.
// based on an orginal sketch by Arduino forum member "danigom"// http://forum.arduino.cc/index.php?action=profile;...#include #include const int numDevices = 2; // number of MAX7219s used const long scrollDelay = 75; // adjust scrolling speedunsigned long bufferLong [14] = {0}; LedControl lc=LedControl(12,11,10,numDevices);prog_uchar scrollText[] PROGMEM ={ " THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG 1234567890 the quick brown fox jumped over the lazy dog \0"};void setup(){ for (int x=0; xvoid loop(){ scrollMessage(scrollText); scrollFont(); }///////////////////////////////////////////////////////////////////////////////////////////////////////////////////prog_uchar font5x7 [] PROGMEM = { //Numeric Font Matrix (Arranged as 7x font data + 1x kerning data) B00000000, //Space (Char 0x20) B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, 6, B10000000, //! B10000000, B10000000, B10000000, B00000000, B00000000, B10000000, 2, B10100000, //" B10100000, B10100000, B00000000, B00000000, B00000000, B00000000, 4, B01010000, //# B01010000, B11111000, B01010000, B11111000, B01010000, B01010000, 6, B00100000, //$ B01111000, B10100000, B01110000, B00101000, B11110000, B00100000, 6, B11000000, //% B11001000, B00010000, B00100000, B01000000, B10011000, B00011000, 6, B01100000, //& B10010000, B10100000, B01000000, B10101000, B10010000, B01101000, 6, B11000000, //' B01000000, B10000000, B00000000, B00000000, B00000000, B00000000, 3, B00100000, //( B01000000, B10000000, B10000000, B10000000, B01000000, B00100000, 4, B10000000, //) B01000000, B00100000, B00100000, B00100000, B01000000, B10000000, 4, B00000000, //* B00100000, B10101000, B01110000, B10101000, B00100000, B00000000, 6, B00000000, //+ B00100000, B00100000, B11111000, B00100000, B00100000, B00000000, 6, B00000000, //, B00000000, B00000000, B00000000, B11000000, B01000000, B10000000, 3, B00000000, //- B00000000, B11111000, B00000000, B00000000, B00000000, B00000000, 6, B00000000, //. B00000000, B00000000, B00000000, B00000000, B11000000, B11000000, 3, B00000000, /// B00001000, B00010000, B00100000, B01000000, B10000000, B00000000, 6, B01110000, //0 B10001000, B10011000, B10101000, B11001000, B10001000, B01110000, 6, B01000000, //1 B11000000, B01000000, B01000000, B01000000, B01000000, B11100000, 4, B01110000, //2 B10001000, B00001000, B00010000, B00100000, B01000000, B11111000, 6, B11111000, //3 B00010000, B00100000, B00010000, B00001000, B10001000, B01110000, 6, B00010000, //4 B00110000, B01010000, B10010000, B11111000, B00010000, B00010000, 6, B11111000, //5 B10000000, B11110000, B00001000, B00001000, B10001000, B01110000, 6, B00110000, //6 B01000000, B10000000, B11110000, B10001000, B10001000, B01110000, 6, B11111000, //7 B10001000, B00001000, B00010000, B00100000, B00100000, B00100000, 6, B01110000, //8 B10001000, B10001000, B01110000, B10001000, B10001000, B01110000, 6, B01110000, //9 B10001000, B10001000, B01111000, B00001000, B00010000, B01100000, 6, B00000000, //: B11000000, B11000000, B00000000, B11000000, B11000000, B00000000, 3, B00000000, //; B11000000, B11000000, B00000000, B11000000, B01000000, B10000000, 3, B00010000, //< B00100000, B01000000, B10000000, B01000000, B00100000, B00010000, 5, B00000000, //= B00000000, B11111000, B00000000, B11111000, B00000000, B00000000, 6, B10000000, //> B01000000, B00100000, B00010000, B00100000, B01000000, B10000000, 5, B01110000, //? B10001000, B00001000, B00010000, B00100000, B00000000, B00100000, 6, B01110000, //@ B10001000, B00001000, B01101000, B10101000, B10101000, B01110000, 6, B01110000, //A B10001000, B10001000, B10001000, B11111000, B10001000, B10001000, 6, B11110000, //B B10001000, B10001000, B11110000, B10001000, B10001000, B11110000, 6, B01110000, //C B10001000, B10000000, B10000000, B10000000, B10001000, B01110000, 6, B11100000, //D B10010000, B10001000, B10001000, B10001000, B10010000, B11100000, 6, B11111000, //E B10000000, B10000000, B11110000, B10000000, B10000000, B11111000, 6, B11111000, //F B10000000, B10000000, B11110000, B10000000, B10000000, B10000000, 6, B01110000, //G B10001000, B10000000, B10111000, B10001000, B10001000, B01111000, 6, B10001000, //H B10001000, B10001000, B11111000, B10001000, B10001000, B10001000, 6, B11100000, //I B01000000, B01000000, B01000000, B01000000, B01000000, B11100000, 4, B00111000, //J B00010000, B00010000, B00010000, B00010000, B10010000, B01100000, 6, B10001000, //K B10010000, B10100000, B11000000, B10100000, B10010000, B10001000, 6, B10000000, //L B10000000, B10000000, B10000000, B10000000, B10000000, B11111000, 6, B10001000, //M B11011000, B10101000, B10101000, B10001000, B10001000, B10001000, 6, B10001000, //N B10001000, B11001000, B10101000, B10011000, B10001000, B10001000, 6, B01110000, //O B10001000, B10001000, B10001000, B10001000, B10001000, B01110000, 6, B11110000, //P B10001000, B10001000, B11110000, B10000000, B10000000, B10000000, 6, B01110000, //Q B10001000, B10001000, B10001000, B10101000, B10010000, B01101000, 6, B11110000, //R B10001000, B10001000, B11110000, B10100000, B10010000, B10001000, 6, B01111000, //S B10000000, B10000000, B01110000, B00001000, B00001000, B11110000, 6, B11111000, //T B00100000, B00100000, B00100000, B00100000, B00100000, B00100000, 6, B10001000, //U B10001000, B10001000, B10001000, B10001000, B10001000, B01110000, 6, B10001000,//V B10001000, B10001000, B10001000, B10001000, B01010000, B00100000, 6, B10001000,//W B10001000, B10001000, B10101000, B10101000, B10101000, B01010000, 6, B10001000,//X B10001000, B01010000, B00100000, B01010000, B10001000, B10001000, 6, B10001000,//Y B10001000, B10001000, B01010000, B00100000, B00100000, B00100000, 6, B11111000,//Z B00001000, B00010000, B00100000, B01000000, B10000000, B11111000, 6, B11100000,//[ B10000000, B10000000, B10000000, B10000000, B10000000, B11100000, 4, B00000000,//(Backward Slash) B10000000, B01000000, B00100000, B00010000, B00001000, B00000000, 6, B11100000,//] B00100000, B00100000, B00100000, B00100000, B00100000, B11100000, 4, B00100000,//^ B01010000, B10001000, B00000000, B00000000, B00000000, B00000000, 6, B00000000,//_ B00000000, B00000000, B00000000, B00000000, B00000000, B11111000, 6, B10000000,//` B01000000, B00100000, B00000000, B00000000, B00000000, B00000000, 4, B00000000,//a B00000000, B01110000, B00001000, B01111000, B10001000, B01111000, 6, B10000000,//b B10000000, B10110000, B11001000, B10001000, B10001000, B11110000, 6, B00000000,//c B00000000, B01110000, B10001000, B10000000, B10001000, B01110000, 6, B00001000,//d B00001000, B01101000, B10011000, B10001000, B10001000, B01111000, 6, B00000000,//e B00000000, B01110000, B10001000, B11111000, B10000000, B01110000, 6, B00110000,//f B01001000, B01000000, B11100000, B01000000, B01000000, B01000000, 6, B00000000,//g B01111000, B10001000, B10001000, B01111000, B00001000, B01110000, 6, B10000000,//h B10000000, B10110000, B11001000, B10001000, B10001000, B10001000, 6, B01000000,//i B00000000, B11000000, B01000000, B01000000, B01000000, B11100000, 4, B00010000,//j B00000000, B00110000, B00010000, B00010000, B10010000, B01100000, 5, B10000000,//k B10000000, B10010000, B10100000, B11000000, B10100000, B10010000, 5, B11000000,//l B01000000, B01000000, B01000000, B01000000, B01000000, B11100000, 4, B00000000,//m B00000000, B11010000, B10101000, B10101000, B10001000, B10001000, 6, B00000000,//n B00000000, B10110000, B11001000, B10001000, B10001000, B10001000, 6, B00000000,//o B00000000, B01110000, B10001000, B10001000, B10001000, B01110000, 6, B00000000,//p B00000000, B11110000, B10001000, B11110000, B10000000, B10000000, 6, B00000000,//q B00000000, B01101000, B10011000, B01111000, B00001000, B00001000, 6, B00000000,//r B00000000, B10110000, B11001000, B10000000, B10000000, B10000000, 6, B00000000,//s B00000000, B01110000, B10000000, B01110000, B00001000, B11110000, 6, B01000000,//t B01000000, B11100000, B01000000, B01000000, B01001000, B00110000, 6, B00000000,//u B00000000, B10001000, B10001000, B10001000, B10011000, B01101000, 6, B00000000,//v B00000000, B10001000, B10001000, B10001000, B01010000, B00100000, 6, B00000000,//w B00000000, B10001000, B10101000, B10101000, B10101000, B01010000, 6, B00000000,//x B00000000, B10001000, B01010000, B00100000, B01010000, B10001000, 6, B00000000,//y B00000000, B10001000, B10001000, B01111000, B00001000, B01110000, 6, B00000000,//z B00000000, B11111000, B00010000, B00100000, B01000000, B11111000, 6, B00100000,//{ B01000000, B01000000, B10000000, B01000000, B01000000, B00100000, 4, B10000000,//| B10000000, B10000000, B10000000, B10000000, B10000000, B10000000, 2, B10000000,//} B01000000, B01000000, B00100000, B01000000, B01000000, B10000000, 4, B00000000,//~ B00000000, B00000000, B01101000, B10010000, B00000000, B00000000, 6, B01100000,// (Char 0x7F) B10010000, B10010000, B01100000, B00000000, B00000000, B00000000, 5 };void scrollFont() { for (int counter=0x20;counter<0x80;counter++){ loadBufferLong(counter); delay(500); } }// Scroll Message void scrollMessage(prog_uchar * messageString) { int counter = 0; int myChar=0; do { // read back a char myChar = pgm_read_byte_near(messageString + counter); if (myChar != 0){ loadBufferLong(myChar); } counter++; } while (myChar != 0); } // Load character into scroll buffer void loadBufferLong(int ascii){ if (ascii >= 0x20 && ascii <=0x7f){ for (int a=0;a<7;a++){ // Loop 7 times for a 5x7 font unsigned long c = pgm_read_byte_near(font5x7 + ((ascii - 0x20) * 8) + a); // Index into character table to get row data unsigned long x = bufferLong [a*2]; // Load current scroll buffer x = x | c; // OR the new character onto end of current bufferLong [a*2] = x; // Store in buffer } byte count = pgm_read_byte_near(font5x7 +((ascii - 0x20) * 8) + 7); // Index into character table for kerning data for (byte x=0; x>24); // Mask off second character lc.setRow(2,a,y); // Send row to relevent MAX7219 chip y = (x>>16); // Mask off third character lc.setRow(1,a,y); // Send row to relevent MAX7219 chip y = (x>>8); // Mask off forth character lc.setRow(0,a,y); // Send row to relevent MAX7219 chip } }