const uint8_t System5x7C[156][5] = {
{0x00, 0x00, 0x00, 0x00, 0x00},// (space)
{0x00, 0x00, 0x5F, 0x00, 0x00},// !
{0x00, 0x07, 0x00, 0x07, 0x00},// "
{0x14, 0x7F, 0x14, 0x7F, 0x14},// #
{0x24, 0x2A, 0x7F, 0x2A, 0x12},// $
{0x23, 0x13, 0x08, 0x64, 0x62},// %
{0x36, 0x49, 0x55, 0x22, 0x50},// &
{0x00, 0x05, 0x03, 0x00, 0x00},// '
{0x00, 0x1C, 0x22, 0x41, 0x00},// (
{0x00, 0x41, 0x22, 0x1C, 0x00},// )
{0x08, 0x2A, 0x1C, 0x2A, 0x08},// *
{0x08, 0x08, 0x3E, 0x08, 0x08},// +
{0x00, 0x50, 0x30, 0x00, 0x00},// ,
{0x08, 0x08, 0x08, 0x08, 0x08},// -
{0x00, 0x60, 0x60, 0x00, 0x00},// .
{0x20, 0x10, 0x08, 0x04, 0x02},// /
{0x3E, 0x51, 0x49, 0x45, 0x3E},// 0
{0x00, 0x42, 0x7F, 0x40, 0x00},// 1
{0x42, 0x61, 0x51, 0x49, 0x46},// 2
{0x21, 0x41, 0x45, 0x4B, 0x31},// 3
{0x18, 0x14, 0x12, 0x7F, 0x10},// 4
{0x27, 0x45, 0x45, 0x45, 0x39},// 5
{0x3C, 0x4A, 0x49, 0x49, 0x30},// 6
{0x01, 0x71, 0x09, 0x05, 0x03},// 7
{0x36, 0x49, 0x49, 0x49, 0x36},// 8
{0x06, 0x49, 0x49, 0x29, 0x1E},// 9
{0x00, 0x36, 0x36, 0x00, 0x00},// :
{0x00, 0x56, 0x36, 0x00, 0x00},// ;
{0x00, 0x08, 0x14, 0x22, 0x41},// <
{0x14, 0x14, 0x14, 0x14, 0x14},// =
{0x41, 0x22, 0x14, 0x08, 0x00},// >
{0x02, 0x01, 0x51, 0x09, 0x06},// ?
{0x32, 0x49, 0x79, 0x41, 0x3E},// @
{0x7E, 0x11, 0x11, 0x11, 0x7E},// A
{0x7F, 0x49, 0x49, 0x49, 0x36},// B
{0x3E, 0x41, 0x41, 0x41, 0x22},// C
{0x7F, 0x41, 0x41, 0x22, 0x1C},// D
{0x7F, 0x49, 0x49, 0x49, 0x41},// E
{0x7F, 0x09, 0x09, 0x01, 0x01},// F
{0x3E, 0x41, 0x41, 0x51, 0x32},// G
{0x7F, 0x08, 0x08, 0x08, 0x7F},// H
{0x00, 0x41, 0x7F, 0x41, 0x00},// I
{0x20, 0x40, 0x41, 0x3F, 0x01},// J
{0x7F, 0x08, 0x14, 0x22, 0x41},// K
{0x7F, 0x40, 0x40, 0x40, 0x40},// L
{0x7F, 0x02, 0x04, 0x02, 0x7F},// M
{0x7F, 0x04, 0x08, 0x10, 0x7F},// N
{0x3E, 0x41, 0x41, 0x41, 0x3E},// O
{0x7F, 0x09, 0x09, 0x09, 0x06},// P
{0x3E, 0x41, 0x51, 0x21, 0x5E},// Q
{0x7F, 0x09, 0x19, 0x29, 0x46},// R
{0x46, 0x49, 0x49, 0x49, 0x31},// S
{0x01, 0x01, 0x7F, 0x01, 0x01},// T
{0x3F, 0x40, 0x40, 0x40, 0x3F},// U
{0x1F, 0x20, 0x40, 0x20, 0x1F},// V
{0x7F, 0x20, 0x18, 0x20, 0x7F},// W
{0x63, 0x14, 0x08, 0x14, 0x63},// X
{0x03, 0x04, 0x78, 0x04, 0x03},// Y
{0x61, 0x51, 0x49, 0x45, 0x43},// Z
{0x00, 0x00, 0x7F, 0x41, 0x41},// [
{0x02, 0x04, 0x08, 0x10, 0x20},// "\"
{0x41, 0x41, 0x7F, 0x00, 0x00},// ]
{0x04, 0x02, 0x01, 0x02, 0x04},// ^
{0x40, 0x40, 0x40, 0x40, 0x40},// _
{0x00, 0x01, 0x02, 0x04, 0x00},// `
{0x20, 0x54, 0x54, 0x54, 0x78},// a
{0x7F, 0x48, 0x44, 0x44, 0x38},// b
{0x38, 0x44, 0x44, 0x44, 0x20},// c
{0x38, 0x44, 0x44, 0x48, 0x7F},// d
{0x38, 0x54, 0x54, 0x54, 0x18},// e
{0x08, 0x7E, 0x09, 0x01, 0x02},// f
{0x08, 0x14, 0x54, 0x54, 0x3C},// g
{0x7F, 0x08, 0x04, 0x04, 0x78},// h
{0x00, 0x44, 0x7D, 0x40, 0x00},// i
{0x20, 0x40, 0x44, 0x3D, 0x00},// j
{0x00, 0x7F, 0x10, 0x28, 0x44},// k
{0x00, 0x41, 0x7F, 0x40, 0x00},// l
{0x7C, 0x04, 0x18, 0x04, 0x78},// m
{0x7C, 0x08, 0x04, 0x04, 0x78},// n
{0x38, 0x44, 0x44, 0x44, 0x38},// o
{0x7C, 0x14, 0x14, 0x14, 0x08},// p
{0x08, 0x14, 0x14, 0x18, 0x7C},// q
{0x7C, 0x08, 0x04, 0x04, 0x08},// r
{0x48, 0x54, 0x54, 0x54, 0x20},// s
{0x04, 0x3F, 0x44, 0x40, 0x20},// t
{0x3C, 0x40, 0x40, 0x20, 0x7C},// u
{0x1C, 0x20, 0x40, 0x20, 0x1C},// v
{0x3C, 0x40, 0x30, 0x40, 0x3C},// w
{0x44, 0x28, 0x10, 0x28, 0x44},// x
{0x0C, 0x50, 0x50, 0x50, 0x3C},// y
{0x44, 0x64, 0x54, 0x4C, 0x44},// z
{0x00, 0x08, 0x36, 0x41, 0x00},// {
{0x00, 0x00, 0x7F, 0x00, 0x00},// |
{0x00, 0x41, 0x36, 0x08, 0x00},// }
{0x08, 0x08, 0x2A, 0x1C, 0x08},// ->
{0x08, 0x1C, 0x2A, 0x08, 0x08}, // <-
{0x7E, 0x11, 0x11, 0x11, 0x7E},// A
{0x7F, 0x49, 0x49, 0x49, 0x30},// Б
{0x7F, 0x49, 0x49, 0x49, 0x36},// B
{0x7F, 0x01, 0x01, 0x01, 0x01},// Г
{0x60, 0x3F, 0x21, 0x3F, 0x60},// Д
{0x7F, 0x49, 0x49, 0x49, 0x41},// E
{0x63, 0x14, 0x7F, 0x14, 0x63},// Ж
{0x49, 0x49, 0x49, 0x49, 0x36},// З
{0x7F, 0x10, 0x08, 0x04, 0x7F},// И
{0x7F, 0x10, 0x09, 0x04, 0x7F},// Й
{0x7F, 0x08, 0x14, 0x22, 0x41},// К
{0x40, 0x3F, 0x01, 0x01, 0x7F},// Л
{0x7F, 0x02, 0x04, 0x02, 0x7F},// М
{0x7F, 0x08, 0x08, 0x08, 0x7F},// H
{0x3E, 0x41, 0x41, 0x41, 0x3E},// O
{0x7F, 0x01, 0x01, 0x01, 0x7F},// П
{0x7F, 0x09, 0x09, 0x09, 0x06},// P
{0x3E, 0x41, 0x41, 0x41, 0x22},// C
{0x01, 0x01, 0x7F, 0x01, 0x01},// T
{0x63, 0x14, 0x08, 0x04, 0x03},// У
{0x3E, 0x41, 0x7F, 0x41, 0x3E},// Ф
{0x63, 0x14, 0x08, 0x14, 0x63},// X
{0x3F, 0x20, 0x20, 0x3F, 0x60},// Ц
{0x07, 0x08, 0x08, 0x08, 0x7F},// Ч
{0x7F, 0x40, 0x7F, 0x40, 0x7F},// Ш
{0x3F, 0x20, 0x3F, 0x20, 0x7F},// Щ
{0x01, 0x7F, 0x48, 0x48, 0x30},// Ъ
{0x3C, 0x41, 0x42, 0x20, 0x7C},// ѝ
{0x7F, 0x08, 0x3E, 0x41, 0x3E},// Ю
{0x46, 0x29, 0x19, 0x09, 0x7F},// Я
{0x20, 0x54, 0x54, 0x54, 0x78},// а
{0x7E, 0x49, 0x45, 0x45, 0x39},// б
{0x7C, 0x54, 0x54, 0x58, 0x20},// в
{0x7C, 0x04, 0x04, 0x04, 0x04},// г
{0x08, 0x14, 0x54, 0x54, 0x3C},// д
{0x38, 0x54, 0x54, 0x54, 0x18},// е
{0x44, 0x28, 0x7C, 0x28, 0x44},// ж
{0x54, 0x54, 0x54, 0x54, 0x28},// з
{0x3C, 0x40, 0x40, 0x20, 0x7C},// и
{0x3C, 0x41, 0x42, 0x21, 0x7C},// й
{0x00, 0x7C, 0x10, 0x28, 0x44},// к
{0x40, 0x3C, 0x04, 0x04, 0x7C},// л
{0x7C, 0x08, 0x10, 0x08, 0x7C},// м
{0x00, 0x7C, 0x10, 0x10, 0x7C},// н
{0x38, 0x44, 0x44, 0x44, 0x38},// о
{0x00, 0x7C, 0x04, 0x04, 0x7C},// п
{0x7C, 0x14, 0x14, 0x14, 0x08},// р
{0x38, 0x44, 0x44, 0x44, 0x20},// с
{0x04, 0x04, 0x7C, 0x04, 0x04},// т
{0x0C, 0x50, 0x50, 0x50, 0x3C},// у
{0x38, 0x44, 0x7C, 0x44, 0x38},// ф
{0x44, 0x28, 0x10, 0x28, 0x44},// х
{0x3C, 0x20, 0x20, 0x3C, 0x60},// ц
{0x00, 0x0C, 0x10, 0x10, 0x7C},// ч
{0x7C, 0x40, 0x7C, 0x40, 0x7C},// ш
{0x3C, 0x20, 0x3C, 0x20, 0x7C},// щ
{0x04, 0x7C, 0x50, 0x50, 0x30},// ъ
{0x00, 0x7C, 0x50, 0x50, 0x30},// ь
{0x7C, 0x10, 0x38, 0x44, 0x38},// ю
{0x48, 0x34, 0x14, 0x14, 0x7C} // я
};
#define PANEL_RESET 2
#define PANEL_CLK 3
#define PANEL_D0 47
#define PANEL_D1 45
#define PANEL_D2 43
#define PANEL_D3 41
#define PANEL_D4 39
#define PANEL_D5 37
#define PANEL_D6 35
volatile uint8_t n = 0;
volatile uint8_t lines[111];
void changeN() {
n++;
panelWrite(lines[n]);
}
void panelInit() {
n = 0;
panelWrite(0x00);
}
void panelWrite(uint8_t toPanel) {
digitalWrite(PANEL_D0, (toPanel >> 0) & 1);
digitalWrite(PANEL_D1, (toPanel >> 1) & 1);
digitalWrite(PANEL_D2, (toPanel >> 2) & 1);
digitalWrite(PANEL_D3, (toPanel >> 3) & 1);
digitalWrite(PANEL_D4, (toPanel >> 4) & 1);
digitalWrite(PANEL_D5, (toPanel >> 5) & 1);
digitalWrite(PANEL_D6, (toPanel >> 6) & 1);
}
void setup() {
// put your setup code here, to run once:
pinMode(31, OUTPUT);
pinMode(47, OUTPUT);
pinMode(35, OUTPUT);
pinMode(37, OUTPUT);
pinMode(39, OUTPUT);
pinMode(41, OUTPUT);
pinMode(43, OUTPUT);
pinMode(45, OUTPUT);
for (int i = 0; i < 111; i++) lines[i] = 0x00;
Serial.begin(115200);
String s = "";
while(!Serial.available());;
s = Serial.readStringUntil('\r');
Serial.println(s);
int index = 3;
for(int i = 0; i < s.length(); i++) {
for(int t = 0; t < 5; t++) {
lines[index] = System5x7C[s[i] - 0x20][t];
index++;
}
index += 3;
}
for(int i = 0; i < 111; i++) Serial.println(lines[i],HEX);
attachInterrupt(digitalPinToInterrupt(3), changeN, FALLING);
attachInterrupt(digitalPinToInterrupt(2), panelInit, FALLING);
}
void loop() {
// put your main code here, to run repeatedly:
}