From 3a53fb080515567d8f91f27d68d2c51e5e1ce8b3 Mon Sep 17 00:00:00 2001 From: Johannes Findeisen Date: Thu, 10 Sep 2015 03:29:00 +0200 Subject: [PATCH] Added very old code for driving a 5x7 dot matrix LED display --- Matrix/MatrixFonts3x5.h | 233 ++++++++++++++++++++++++++++++++++++++++ Matrix/matrix.pde | 225 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 458 insertions(+) create mode 100644 Matrix/MatrixFonts3x5.h create mode 100644 Matrix/matrix.pde diff --git a/Matrix/MatrixFonts3x5.h b/Matrix/MatrixFonts3x5.h new file mode 100644 index 0000000..5eebe99 --- /dev/null +++ b/Matrix/MatrixFonts3x5.h @@ -0,0 +1,233 @@ + +#define A { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,0,0}, \ + {0,0,0,1,0,1,0}, \ + {0,1,1,1,1,0,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define B { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,1,0,1,0}, \ + {0,0,1,0,1,0,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define C { \ + {0,0,0,0,0,0,0}, \ + {0,0,1,1,1,0,0}, \ + {0,1,0,0,0,1,0}, \ + {0,0,1,0,1,0,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define D { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,0,0,1,0}, \ + {0,0,1,1,1,0,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define E { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,1,0,1,0}, \ + {0,1,0,0,0,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define F { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,1,0,1,0}, \ + {0,0,0,0,0,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define G { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,1,0,1,0}, \ + {0,1,1,1,0,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define H { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,1,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define I { \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define J { \ + {0,0,0,0,0,0,0}, \ + {0,0,1,1,0,0,0}, \ + {0,1,0,0,0,0,0}, \ + {0,0,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define K { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,1,0,0,0}, \ + {0,1,1,0,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define L { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,0,0,0,0}, \ + {0,1,0,0,0,0,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define M { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,1,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define N { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,1,1,1,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define O { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,0,0,1,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define P { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,1,0,1,0}, \ + {0,0,0,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define Q { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,0,0,1,0}, \ + {0,0,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define R { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,1,1,0,1,0}, \ + {0,1,0,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define S { \ + {0,0,0,0,0,0,0}, \ + {0,1,0,0,1,0,0}, \ + {0,1,0,1,0,1,0}, \ + {0,0,1,0,0,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define T { \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,1,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define U { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,1,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define V { \ + {0,0,0,0,0,0,0}, \ + {0,0,1,1,1,1,0}, \ + {0,1,0,0,0,0,0}, \ + {0,0,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define W { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,1,0,0,0,0}, \ + {0,1,1,1,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define X { \ + {0,0,0,0,0,0,0}, \ + {0,1,1,0,1,1,0}, \ + {0,0,0,1,0,0,0}, \ + {0,1,1,0,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define Y { \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,1,1,0}, \ + {0,1,1,1,0,0,0}, \ + {0,0,0,0,1,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define Z { \ + {0,0,0,0,0,0,0}, \ + {0,1,0,0,1,1,0}, \ + {0,1,0,1,0,1,0}, \ + {0,1,1,0,0,1,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define DASH { \ + {0,0,0,0,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,0,0,0,0} \ +} + +#define SPACE { \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0} \ +} + +#define DOT { \ + {0,0,0,0,0,0,0}, \ + {0,1,0,0,0,0,0}, \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0}, \ + {0,0,0,0,0,0,0} \ +} + diff --git a/Matrix/matrix.pde b/Matrix/matrix.pde new file mode 100644 index 0000000..4929319 --- /dev/null +++ b/Matrix/matrix.pde @@ -0,0 +1,225 @@ +#include +#include + +#define COLS 5 +#define ROWS 7 +#define PINS 13 + +#define MATRIX1 { \ + {1,0,1,0,1,0,1}, \ + {0,1,0,1,0,1,0}, \ + {1,0,1,0,1,0,1}, \ + {0,1,0,1,0,1,0}, \ + {1,0,1,0,1,0,1} \ +} + +#define MATRIX2 { \ + {0,1,0,1,0,1,0}, \ + {1,0,1,0,1,0,1}, \ + {0,1,0,1,0,1,0}, \ + {1,0,1,0,1,0,1}, \ + {0,1,0,1,0,1,0} \ +} + +byte col = 0; +byte leds[COLS][ROWS]; + +// pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1) +int pins[PINS]= {-1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + +// col[xx] of leds = pin yy on led matrix +int cols[COLS] = {pins[1], pins[3], pins[10], pins[7], pins[8]}; + +// row[xx] of leds = pin yy on led matrix +int rows[ROWS] = {pins[12], pins[11], pins[2], pins[9], pins[4], pins[5], pins[6]}; + +const int numPatterns = 14; +byte patterns[numPatterns][COLS][ROWS] = {H,A,L,L,O,DASH,W,E,L,T,DOT,DOT,DOT,SPACE}; + +int pattern = 0; + +void setup() { + + //Serial.begin(9600); + + // sets the pins as output + for (int i = 0; i < PINS; i++) { + pinMode(pins[i], OUTPUT); + } + + // set up cols + for (int i = 1; i <= COLS; i++) { + digitalWrite(cols[i - 1], 0); + } + // and rows + for (int i = 1; i <= ROWS; i++) { + digitalWrite(rows[i - 1], 1); + } + + blink(); + five2one(); + + clearLeds(); + + Timer1.initialize(2000); // initialize timer1, and set a 1/2 second period + Timer1.attachInterrupt(display); // attaches display() as a timer overflow interrupt + + setPattern(pattern); +} + +void loop() { + pattern = ++pattern % numPatterns; + slidePattern(pattern, 180); +} +// Interrupt routine +void display() { + digitalWrite(cols[col], 0); // Turn whole previous column off + col++; + if (col == 5) { + col = 0; + } + for (int row = 0; row < 7; row++) { + if (leds[col][(ROWS - 1) - row] == 1) { + digitalWrite(rows[row], 0); // Turn on this led + } + else { + digitalWrite(rows[row], 1); // Turn off this led + } + // delay(10); + } + digitalWrite(cols[col], 1); // Turn whole column on at once (for equal lighting times) + +} + +void slidePattern(int pattern, int del) { + for (int l = 0; l < COLS; l++) { + for (int i = 0; i < (COLS - 1); i++) { + for (int j = 0; j < ROWS; j++) { + leds[i][j] = leds[i + 1][j]; + } + } + for (int j = 0; j < ROWS; j++) { + leds[4][j] = patterns[pattern][0 + l][j]; + } + delay(del); + } +} + +void clearLeds() { + // Clear display array + for (int i = 0; i < COLS; i++) { + for (int j = 0; j < ROWS; j++) { + leds[i][j] = 0; + } + } +} + +void setPattern(int pattern) { + for (int i = 0; i < COLS; i++) { + for (int j = 0; j < ROWS; j++) { + leds[i][j] = patterns[pattern][i][j]; + } + } +} + +void blink() { + for(int i = 0; i < 12; i++) { + if(i % 2 != 0) { + digitalWrite(cols[0], 1); + digitalWrite(cols[1], 0); + digitalWrite(cols[2], 0); + digitalWrite(cols[3], 0); + digitalWrite(cols[4], 0); + digitalWrite(rows[0], 0); + digitalWrite(rows[1], 1); + digitalWrite(rows[2], 1); + digitalWrite(rows[3], 1); + digitalWrite(rows[4], 1); + digitalWrite(rows[5], 1); + digitalWrite(rows[6], 1); + } else { + digitalWrite(cols[0], 0); + digitalWrite(cols[1], 0); + digitalWrite(cols[2], 0); + digitalWrite(cols[3], 0); + digitalWrite(cols[4], 0); + digitalWrite(rows[0], 1); + digitalWrite(rows[1], 1); + digitalWrite(rows[2], 1); + digitalWrite(rows[3], 1); + digitalWrite(rows[4], 1); + digitalWrite(rows[5], 1); + digitalWrite(rows[6], 1); + } + delay(100); + } +} + +void five2one() { + digitalWrite(cols[0], 1); + digitalWrite(cols[1], 0); + digitalWrite(cols[2], 0); + digitalWrite(cols[3], 0); + digitalWrite(cols[4], 0); + digitalWrite(rows[0], 0); + digitalWrite(rows[1], 1); + digitalWrite(rows[2], 1); + digitalWrite(rows[3], 1); + digitalWrite(rows[4], 1); + digitalWrite(rows[5], 1); + digitalWrite(rows[6], 1); + delay(100); + digitalWrite(cols[0], 0); + digitalWrite(cols[1], 1); + digitalWrite(cols[2], 0); + digitalWrite(cols[3], 0); + digitalWrite(cols[4], 0); + digitalWrite(rows[0], 0); + digitalWrite(rows[1], 1); + digitalWrite(rows[2], 1); + digitalWrite(rows[3], 1); + digitalWrite(rows[4], 1); + digitalWrite(rows[5], 1); + digitalWrite(rows[6], 1); + delay(100); + digitalWrite(cols[0], 0); + digitalWrite(cols[1], 0); + digitalWrite(cols[2], 1); + digitalWrite(cols[3], 0); + digitalWrite(cols[4], 0); + digitalWrite(rows[0], 0); + digitalWrite(rows[1], 1); + digitalWrite(rows[2], 1); + digitalWrite(rows[3], 1); + digitalWrite(rows[4], 1); + digitalWrite(rows[5], 1); + digitalWrite(rows[6], 1); + delay(100); + digitalWrite(cols[0], 0); + digitalWrite(cols[1], 0); + digitalWrite(cols[2], 0); + digitalWrite(cols[3], 1); + digitalWrite(cols[4], 0); + digitalWrite(rows[0], 0); + digitalWrite(rows[1], 1); + digitalWrite(rows[2], 1); + digitalWrite(rows[3], 1); + digitalWrite(rows[4], 1); + digitalWrite(rows[5], 1); + digitalWrite(rows[6], 1); + delay(100); + digitalWrite(cols[0], 0); + digitalWrite(cols[1], 0); + digitalWrite(cols[2], 0); + digitalWrite(cols[3], 0); + digitalWrite(cols[4], 1); + digitalWrite(rows[0], 0); + digitalWrite(rows[1], 1); + digitalWrite(rows[2], 1); + digitalWrite(rows[3], 1); + digitalWrite(rows[4], 1); + digitalWrite(rows[5], 1); + digitalWrite(rows[6], 1); + delay(100); +} +