1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | // maxmatrix-disp-scroll-text-7219 // based on // https://code.google.com/p/arudino-maxmatrix-library/wiki/Example_Display_Scrolling_Tex #include "MaxMatrix.h" #include "avr/pgmspace.h" #define maxDisplays 2 // Number of MAX7219's in use. byte Buf7219[7]; // "width,height,data[5]" single character buffer. const int data = 11; // DIN or MOSI const int load = 10; // CS const int clock = 13; // SCK MaxMatrix m(data, load, clock, maxDisplays); // Data array is stored in program memory (see memcpy_P for access). // Parameters are width, height, character data... // There is a speed improvement for characters with height 8 bits see lib. PROGMEM const unsigned char CH[] = { 3, 8, B0000000, B0000000, B0000000, B0000000, B0000000, // space 1, 8, B1011111, B0000000, B0000000, B0000000, B0000000, // ! 3, 8, B0000011, B0000000, B0000011, B0000000, B0000000, // " 5, 8, B0010100, B0111110, B0010100, B0111110, B0010100, // # 4, 8, B0100100, B1101010, B0101011, B0010010, B0000000, // $ 5, 8, B1100011, B0010011, B0001000, B1100100, B1100011, // % 5, 8, B0110110, B1001001, B1010110, B0100000, B1010000, // & 1, 8, B0000011, B0000000, B0000000, B0000000, B0000000, // ' 3, 8, B0011100, B0100010, B1000001, B0000000, B0000000, // ( 3, 8, B1000001, B0100010, B0011100, B0000000, B0000000, // ) 5, 8, B0101000, B0011000, B0001110, B0011000, B0101000, // * 5, 8, B0001000, B0001000, B0111110, B0001000, B0001000, // + 2, 8, B10110000, B1110000, B0000000, B0000000, B0000000, // , 4, 8, B0001000, B0001000, B0001000, B0001000, B0000000, // - 2, 8, B1100000, B1100000, B0000000, B0000000, B0000000, // . 4, 8, B1100000, B0011000, B0000110, B0000001, B0000000, // / 4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // 0 3, 8, B1000010, B1111111, B1000000, B0000000, B0000000, // 1 4, 8, B1100010, B1010001, B1001001, B1000110, B0000000, // 2 4, 8, B0100010, B1000001, B1001001, B0110110, B0000000, // 3 4, 8, B0011000, B0010100, B0010010, B1111111, B0000000, // 4 4, 8, B0100111, B1000101, B1000101, B0111001, B0000000, // 5 4, 8, B0111110, B1001001, B1001001, B0110000, B0000000, // 6 4, 8, B1100001, B0010001, B0001001, B0000111, B0000000, // 7 4, 8, B0110110, B1001001, B1001001, B0110110, B0000000, // 8 4, 8, B0000110, B1001001, B1001001, B0111110, B0000000, // 9 2, 8, B01010000, B0000000, B0000000, B0000000, B0000000, // : 2, 8, B10000000, B01010000, B0000000, B0000000, B0000000, // ; 3, 8, B0010000, B0101000, B1000100, B0000000, B0000000, // < 3, 8, B0010100, B0010100, B0010100, B0000000, B0000000, // = 3, 8, B1000100, B0101000, B0010000, B0000000, B0000000, // > 4, 8, B0000010, B1011001, B0001001, B0000110, B0000000, // ? 5, 8, B0111110, B1001001, B1010101, B1011101, B0001110, // @ 4, 8, B1111110, B0010001, B0010001, B1111110, B0000000, // A 4, 8, B1111111, B1001001, B1001001, B0110110, B0000000, // B 4, 8, B0111110, B1000001, B1000001, B0100010, B0000000, // C 4, 8, B1111111, B1000001, B1000001, B0111110, B0000000, // D 4, 8, B1111111, B1001001, B1001001, B1000001, B0000000, // E 4, 8, B1111111, B0001001, B0001001, B0000001, B0000000, // F 4, 8, B0111110, B1000001, B1001001, B1111010, B0000000, // G 4, 8, B1111111, B0001000, B0001000, B1111111, B0000000, // H 3, 8, B1000001, B1111111, B1000001, B0000000, B0000000, // I 4, 8, B0110000, B1000000, B1000001, B0111111, B0000000, // J 4, 8, B1111111, B0001000, B0010100, B1100011, B0000000, // K 4, 8, B1111111, B1000000, B1000000, B1000000, B0000000, // L 5, 8, B1111111, B0000010, B0001100, B0000010, B1111111, // M 5, 8, B1111111, B0000100, B0001000, B0010000, B1111111, // N 4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // O 4, 8, B1111111, B0001001, B0001001, B0000110, B0000000, // P 4, 8, B0111110, B1000001, B1000001, B10111110, B0000000, // Q 4, 8, B1111111, B0001001, B0001001, B1110110, B0000000, // R 4, 8, B1000110, B1001001, B1001001, B0110010, B0000000, // S 5, 8, B0000001, B0000001, B1111111, B0000001, B0000001, // T 4, 8, B0111111, B1000000, B1000000, B0111111, B0000000, // U 5, 8, B0001111, B0110000, B1000000, B0110000, B0001111, // V 5, 8, B0111111, B1000000, B0111000, B1000000, B0111111, // W 5, 8, B1100011, B0010100, B0001000, B0010100, B1100011, // X 5, 8, B0000111, B0001000, B1110000, B0001000, B0000111, // Y 4, 8, B1100001, B1010001, B1001001, B1000111, B0000000, // Z 2, 8, B1111111, B1000001, B0000000, B0000000, B0000000, // [ 4, 8, B0000001, B0000110, B0011000, B1100000, B0000000, // backslash 2, 8, B1000001, B1111111, B0000000, B0000000, B0000000, // ] 3, 8, B0000010, B0000001, B0000010, B0000000, B0000000, // hat 4, 8, B1000000, B1000000, B1000000, B1000000, B0000000, // _ 2, 8, B0000001, B0000010, B0000000, B0000000, B0000000, // ` 4, 8, B0100000, B1010100, B1010100, B1111000, B0000000, // a 4, 8, B1111111, B1000100, B1000100, B0111000, B0000000, // b 4, 8, B0111000, B1000100, B1000100, B0000000, B0000000, // c // JFM MOD. 4, 8, B0111000, B1000100, B1000100, B1111111, B0000000, // d 4, 8, B0111000, B1010100, B1010100, B0011000, B0000000, // e 3, 8, B0000100, B1111110, B0000101, B0000000, B0000000, // f 4, 8, B10011000, B10100100, B10100100, B01111000, B0000000, // g 4, 8, B1111111, B0000100, B0000100, B1111000, B0000000, // h 3, 8, B1000100, B1111101, B1000000, B0000000, B0000000, // i 4, 8, B1000000, B10000000, B10000100, B1111101, B0000000, // j 4, 8, B1111111, B0010000, B0101000, B1000100, B0000000, // k 3, 8, B1000001, B1111111, B1000000, B0000000, B0000000, // l 5, 8, B1111100, B0000100, B1111100, B0000100, B1111000, // m 4, 8, B1111100, B0000100, B0000100, B1111000, B0000000, // n 4, 8, B0111000, B1000100, B1000100, B0111000, B0000000, // o 4, 8, B11111100, B0100100, B0100100, B0011000, B0000000, // p 4, 8, B0011000, B0100100, B0100100, B11111100, B0000000, // q 4, 8, B1111100, B0001000, B0000100, B0000100, B0000000, // r 4, 8, B1001000, B1010100, B1010100, B0100100, B0000000, // s 3, 8, B0000100, B0111111, B1000100, B0000000, B0000000, // t 4, 8, B0111100, B1000000, B1000000, B1111100, B0000000, // u 5, 8, B0011100, B0100000, B1000000, B0100000, B0011100, // v 5, 8, B0111100, B1000000, B0111100, B1000000, B0111100, // w 5, 8, B1000100, B0101000, B0010000, B0101000, B1000100, // x 4, 8, B10011100, B10100000, B10100000, B1111100, B0000000, // y 3, 8, B1100100, B1010100, B1001100, B0000000, B0000000, // z 3, 8, B0001000, B0110110, B1000001, B0000000, B0000000, // { 1, 8, B1111111, B0000000, B0000000, B0000000, B0000000, // | 3, 8, B1000001, B0110110, B0001000, B0000000, B0000000, // } 4, 8, B0001000, B0000100, B0001000, B0000100, B0000000, // ~ }; void setup() { m.init(); m.setIntensity(3); } // Scrolling Text char string[] = " Reza !!"; void loop() { delay(100); m.shiftLeft(false, true); printStringWithShift(string,100); } void printCharWithShift(char c, int shift_speed) { if (c < 32) return; c -= 32; memcpy_P(Buf7219, CH + 7*c, 7); m.writeSprite(maxDisplays*8, 0, Buf7219); m.setColumn(maxDisplays*8 + Buf7219[0], 0); for (int i=0; i<=Buf7219[0]; i++) { delay(shift_speed); m.shiftLeft(false, false); } } void printStringWithShift(char* s, int shift_speed) { while (*s != 0) { printCharWithShift(*s, shift_speed); s++; } } |