Added very old code for driving a 5x7 dot matrix LED display
This commit is contained in:
parent
2985c36666
commit
3a53fb0805
2 changed files with 458 additions and 0 deletions
233
Matrix/MatrixFonts3x5.h
Normal file
233
Matrix/MatrixFonts3x5.h
Normal file
|
|
@ -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} \
|
||||
}
|
||||
|
||||
225
Matrix/matrix.pde
Normal file
225
Matrix/matrix.pde
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
#include <TimerOne.h>
|
||||
#include <MatrixFonts3x5.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue