/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ #define ROW 3 #define COL 0 #define ROWCNT 7 #define COLCNT 13 #define CHARWIDTH 5 #define FRAMELEN 10 #define DELAY 3 int frame[COLCNT][ROWCNT] = {0}; /*const int frame_A[ROWCNT][CHARWIDTH] = { {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 1, 0}, {0, 1, 0, 1, 0}, {1, 1, 1, 1, 1}, {1, 0, 0, 0, 1}, {1, 0, 0, 0, 1}, };*/ /*const int frame_C[CHARWIDTH][ROWCNT] = { {0, 0, 1, 1, 1}, {0, 1, 1, 0, 0}, {1, 1, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 1, 0, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 1, 1, 1}, }; const int frame_H[ROWCNT][CHARWIDTH] = { {1, 0, 0, 0, 1}, {1, 0, 0, 0, 1}, {1, 0, 0, 0, 1}, {1, 1, 1, 1, 1}, {1, 0, 0, 0, 1}, {1, 0, 0, 0, 1}, {1, 0, 0, 0, 1}, }; const int frame_L[ROWCNT][CHARWIDTH] = { {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 0, 0, 0, 0}, {1, 1, 1, 1, 1}, };*/ const int frame_MINUS[CHARWIDTH][ROWCNT] = { {0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0}, }; const int emptyCol[ROWCNT] = {0}; unsigned long int framenr = 0; int rownr = 0; void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: int i; for (i = 0;i < ROWCNT; i++) pinMode(ROW + i, OUTPUT); for (i = 0;i < COLCNT; i++) pinMode(COL + i, OUTPUT); } void setCol(int c, const int data[ROWCNT]) { int r; if (c > 0 && c <= COLCNT) { for (r = 0; r < ROWCNT; r++) frame[c][r] = data[r]; } } void setChar(int c, const int data[CHARWIDTH][ROWCNT]) { int i; for (i = 0; i < CHARWIDTH; i++) setCol(c+i, data[i]); } void clearFrame() { int i = 0; for (i = 0; i < COLCNT; i++) setCol(i, emptyCol); } void nextFrame() { int c; int f2 = (framenr/FRAMELEN) % (COLCNT+CHARWIDTH); clearFrame(); setChar(COLCNT-f2, frame_MINUS); } void loop() { int i; rownr = ( rownr + 1 ) % ROWCNT; if (rownr == 0) { framenr++; nextFrame(); } for (i = 0; i < COLCNT; i++) { digitalWrite(COL + i, frame[rownr][i]); } digitalWrite(ROW + rownr, HIGH); delay(DELAY); digitalWrite(ROW + rownr, LOW); }