arduino stuffs
Diffstat (limited to 'led_matrix/led_matrix.ino')
| -rw-r--r-- | led_matrix/led_matrix.ino | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/led_matrix/led_matrix.ino b/led_matrix/led_matrix.ino new file mode 100644 index 0000000..ee70825 --- /dev/null +++ b/led_matrix/led_matrix.ino @@ -0,0 +1,154 @@ +//update from SAnwandter + +#define ROW_1 2 +#define ROW_2 3 +#define ROW_3 4 +#define ROW_4 5 +#define ROW_5 6 +#define ROW_6 7 +#define ROW_7 8 +#define ROW_8 9 + +#define COL_1 10 +#define COL_2 11 +#define COL_3 12 +#define COL_4 13 +#define COL_5 A0 +#define COL_6 A1 +#define COL_7 A2 +#define COL_8 A3 + +const byte rows[] = { + ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8 +}; +const byte col[] = { + COL_1,COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8 +}; + +// The display buffer +// It's prefilled with a smiling face (1 = ON, 0 = OFF) +byte ALL[] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111}; +byte EX[] = {B00000000,B00010000,B00010000,B00010000,B00010000,B00000000,B00010000,B00000000}; +byte A[] = { B00000000,B00111100,B01100110,B01100110,B01111110,B01100110,B01100110,B01100110}; +byte B[] = {B01111000,B01001000,B01001000,B01110000,B01001000,B01000100,B01000100,B01111100}; +byte C[] = {B00000000,B00011110,B00100000,B01000000,B01000000,B01000000,B00100000,B00011110}; +byte D[] = {B00000000,B00111000,B00100100,B00100010,B00100010,B00100100,B00111000,B00000000}; +byte E[] = {B00000000,B00111100,B00100000,B00111000,B00100000,B00100000,B00111100,B00000000}; +byte F[] = {B00000000,B00111100,B00100000,B00111000,B00100000,B00100000,B00100000,B00000000}; +byte G[] = {B00000000,B00111110,B00100000,B00100000,B00101110,B00100010,B00111110,B00000000}; +byte H[] = {B00000000,B00100100,B00100100,B00111100,B00100100,B00100100,B00100100,B00000000}; +byte I[] = {B00000000,B00111000,B00010000,B00010000,B00010000,B00010000,B00111000,B00000000}; +byte J[] = {B00000000,B00011100,B00001000,B00001000,B00001000,B00101000,B00111000,B00000000}; +byte K[] = {B00000000,B00100100,B00101000,B00110000,B00101000,B00100100,B00100100,B00000000}; +byte L[] = {B00000000,B00100000,B00100000,B00100000,B00100000,B00100000,B00111100,B00000000}; +byte M[] = {B00000000,B00000000,B01000100,B10101010,B10010010,B10000010,B10000010,B00000000}; +byte N[] = {B00000000,B00100010,B00110010,B00101010,B00100110,B00100010,B00000000,B00000000}; +byte O[] = {B00000000,B00111100,B01000010,B01000010,B01000010,B01000010,B00111100,B00000000}; +byte P[] = {B00000000,B00111000,B00100100,B00100100,B00111000,B00100000,B00100000,B00000000}; +byte Q[] = {B00000000,B00111100,B01000010,B01000010,B01000010,B01000110,B00111110,B00000001}; +byte R[] = {B00000000,B00111000,B00100100,B00100100,B00111000,B00100100,B00100100,B00000000}; +byte S[] = {B00000000,B00111100,B00100000,B00111100,B00000100,B00000100,B00111100,B00000000}; +byte T[] = {B00000000,B01111100,B00010000,B00010000,B00010000,B00010000,B00010000,B00000000}; +byte U[] = {B00000000,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000,B00000000}; +byte V[] = {B00000000,B00100010,B00100010,B00100010,B00010100,B00010100,B00001000,B00000000}; +byte W[] = {B00000000,B10000010,B10010010,B01010100,B01010100,B00101000,B00000000,B00000000}; +byte X[] = {B00000000,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B00000000}; +byte Y[] = {B00000000,B01000100,B00101000,B00010000,B00010000,B00010000,B00010000,B00000000}; +byte Z[] = {B00000000,B00111100,B00000100,B00001000,B00010000,B00100000,B00111100,B00000000}; + +float timeCount = 0; + +void setup() +{ + // Open serial port + Serial.begin(9600); + + // Set all used pins to OUTPUT + // This is very important! If the pins are set to input + // the display will be very dim. + for (byte i = 2; i <= 13; i++) + pinMode(i, OUTPUT); + pinMode(A0, OUTPUT); + pinMode(A1, OUTPUT); + pinMode(A2, OUTPUT); + pinMode(A3, OUTPUT); +} + +void loop() { + // This could be rewritten to not use a delay, which would make it appear brighter +delay(5); +timeCount += 1; + +if(timeCount < 20) +{ +drawScreen(A); +} +else if (timeCount < 40) +{ +drawScreen(R); +} +else if (timeCount < 60) +{ +drawScreen(D); +} +else if (timeCount < 80) +{ +drawScreen(U); +} +else if (timeCount < 100) +{ +drawScreen(I); +} +else if (timeCount < 120) +{ +drawScreen(N); +} +else if (timeCount < 140) { + drawScreen(O); +} +else if (timeCount < 160) +{ +drawScreen(ALL); +} +else if (timeCount < 180) +{ +drawScreen(ALL); +} +else { +// back to the start +timeCount = 0; +} +} + void drawScreen(byte buffer2[]) + { + // Turn on each row in series + for (byte i = 0; i < 8; i++) // count next row + { + digitalWrite(rows[i], HIGH); //initiate whole row + for (byte a = 0; a < 8; a++) // count next row + { + // if You set (~buffer2[i] >> a) then You will have positive + digitalWrite(col[a], (buffer2[i] >> a) & 0x01); // initiate whole column + + delayMicroseconds(100); // uncoment deley for diferent speed of display + //delayMicroseconds(1000); + //delay(10); + //delay(100); + + digitalWrite(col[a], 1); // reset whole column + } + digitalWrite(rows[i], LOW); // reset whole row + // otherwise last row will intersect with next row + } +} +// + /* this is siplest resemplation how for loop is working with each row. + digitalWrite(COL_1, (~b >> 0) & 0x01); // Get the 1st bit: 10000000 + digitalWrite(COL_2, (~b >> 1) & 0x01); // Get the 2nd bit: 01000000 + digitalWrite(COL_3, (~b >> 2) & 0x01); // Get the 3rd bit: 00100000 + digitalWrite(COL_4, (~b >> 3) & 0x01); // Get the 4th bit: 00010000 + digitalWrite(COL_5, (~b >> 4) & 0x01); // Get the 5th bit: 00001000 + digitalWrite(COL_6, (~b >> 5) & 0x01); // Get the 6th bit: 00000100 + digitalWrite(COL_7, (~b >> 6) & 0x01); // Get the 7th bit: 00000010 + digitalWrite(COL_8, (~b >> 7) & 0x01); // Get the 8th bit: 00000001 +}*/
\ No newline at end of file |