#include <LedControl.h>
#include <SoftwareSerial.h>
#define F_CPU 16500000L
byte Font5x5[] = {
0x04, 0x2E, 0x55, 0x64, 0x84, // 0x00 arrow up
0x04, 0x24, 0x55, 0x6E, 0x84, // 0x01 arrow down
0x04, 0x22, 0x5F, 0x62, 0x84, // 0x02 arrow right
0x04, 0x28, 0x5F, 0x68, 0x84, // 0x03 arrow left
0x04, 0x2E, 0x5F, 0x6E, 0x8E, // 0x04 fat arrow up
0x0E, 0x2E, 0x5F, 0x6E, 0x84, // 0x05 fat arrow down
0x04, 0x3E, 0x5F, 0x7E, 0x84, // 0x06 fat arrow right
0x04, 0x2F, 0x5F, 0x6F, 0x84, // 0x07 fat arrow left
0x00, 0x24, 0x4E, 0x7F, 0x8E, // 0x08 pointer up
0x04, 0x2E, 0x5F, 0x6E, 0x80, // 0x09 pointer up-up
0x0E, 0x3F, 0x4E, 0x64, 0x80, // 0x0A pointer down
0x00, 0x2E, 0x5F, 0x6E, 0x84, // 0x0B pointer down-down
0x00, 0x20, 0x40, 0x60, 0x9F, // 0x0C row1
0x00, 0x20, 0x40, 0x7F, 0x9F, // 0x0D row2
0x00, 0x20, 0x5F, 0x7F, 0x9F, // 0x0E row3
0x00, 0x3F, 0x5F, 0x7F, 0x9F, // 0x0F row4
0x1F, 0x3F, 0x5F, 0x7F, 0x9F, // 0x10 full 5x5
0x1E, 0x3E, 0x5E, 0x7E, 0x9E, // 0x11 col4
0x1C, 0x3C, 0x5C, 0x7C, 0x9C, // 0x12 col3
0x18, 0x38, 0x58, 0x78, 0x98, // 0x13 col2
0x10, 0x30, 0x50, 0x70, 0x90, // 0x14 col1
0x1C, 0x34, 0x5C, 0x60, 0x80, // 0x15 degree sign
0x1F, 0x31, 0x51, 0x71, 0x9F, // 0x16 square
0x1F, 0x35, 0x5F, 0x75, 0x9F, // 0x17 square+
0x15, 0x2A, 0x55, 0x6A, 0x95, // 0x18 diagonal
0x0A, 0x35, 0x4A, 0x75, 0x8A, // 0x19 antidiagonal
0x07, 0x28, 0x5E, 0x68, 0x87, // 0x1A euro sign
0x15, 0x2E, 0x44, 0x64, 0x84, // 0x1B antenna sign
0x16, 0x2D, 0x46, 0x6D, 0x96, // 0x1C BT sign
0x0E, 0x31, 0x51, 0x6A, 0x9B, // 0x1D omega
0x10, 0x28, 0x44, 0x6A, 0x91, // 0x1E lambda
0x01, 0x2E, 0x5A, 0x6A, 0x8A, // 0x1F pi
0x00, 0x20, 0x40, 0x60, 0x80, // 0x20 (space) empty
0x04, 0x24, 0x44, 0x60, 0x84, // 0x21 !
0x0A, 0x2A, 0x40, 0x60, 0x80, // 0x22 "
0x0A, 0x3F, 0x4A, 0x7F, 0x8A, // 0x23 #
0x0F, 0x34, 0x4E, 0x65, 0x9E, // 0x24 $
0x19, 0x3A, 0x44, 0x6B, 0x93, // 0x25 %
0x08, 0x34, 0x4D, 0x72, 0x8D, // 0x26 &
0x04, 0x24, 0x40, 0x60, 0x80, // 0x27 '
0x02, 0x24, 0x44, 0x64, 0x82, // 0x28 (
0x08, 0x24, 0x44, 0x64, 0x88, // 0x29 )
0x15, 0x2E, 0x5F, 0x6E, 0x95, // 0x2A *
0x04, 0x24, 0x5F, 0x64, 0x84, // 0x2B +
0x00, 0x20, 0x40, 0x64, 0x84, // 0x2C ,
0x00, 0x20, 0x4E, 0x60, 0x80, // 0x2D -
0x00, 0x20, 0x40, 0x60, 0x84, // 0x2E .
0x01, 0x22, 0x44, 0x68, 0x90, // 0x2F /
0x0E, 0x33, 0x55, 0x79, 0x8E, // 0x30 0
0x04, 0x2C, 0x44, 0x64, 0x8E, // 0x31 1
0x1E, 0x21, 0x46, 0x68, 0x9F, // 0x32 2
0x1E, 0x21, 0x4E, 0x61, 0x9E, // 0x33 3
0x06, 0x2A, 0x5F, 0x62, 0x82, // 0x34 4
0x1F, 0x30, 0x5E, 0x61, 0x9E, // 0x35 5
0x06, 0x28, 0x5E, 0x71, 0x8E, // 0x36 6
0x1F, 0x22, 0x44, 0x68, 0x88, // 0x37 7
0x0E, 0x31, 0x4E, 0x71, 0x8E, // 0x38 8
0x0E, 0x31, 0x4F, 0x62, 0x8C, // 0x39 9
0x00, 0x24, 0x40, 0x64, 0x80, // 0x3A :
0x00, 0x24, 0x40, 0x6C, 0x80, // 0x3B ;
0x02, 0x24, 0x48, 0x64, 0x82, // 0x3C <
0x00, 0x3F, 0x40, 0x7F, 0x80, // 0x3D =
0x08, 0x24, 0x42, 0x64, 0x88, // 0x3E >
0x0E, 0x31, 0x42, 0x64, 0x84, // 0x3F ?
0x0E, 0x35, 0x57, 0x70, 0x8E, // 0x40 @
0x04, 0x2A, 0x5F, 0x71, 0x91, // 0x41 A
0x1E, 0x29, 0x4E, 0x69, 0x9E, // 0x42 B
0x0F, 0x30, 0x50, 0x70, 0x8F, // 0x43 C
0x1E, 0x29, 0x49, 0x69, 0x9E, // 0x44 D
0x1F, 0x30, 0x5E, 0x70, 0x9F, // 0x45 E
0x1F, 0x30, 0x5E, 0x70, 0x90, // 0x46 F
0x0F, 0x30, 0x53, 0x71, 0x8F, // 0x47 G
0x11, 0x31, 0x5F, 0x71, 0x91, // 0x48 H
0x0E, 0x24, 0x44, 0x64, 0x8E, // 0x49 I
0x01, 0x21, 0x41, 0x71, 0x8E, // 0x4A J
0x13, 0x34, 0x58, 0x74, 0x93, // 0x4B K
0x10, 0x30, 0x50, 0x70, 0x9F, // 0x4C L
0x11, 0x3B, 0x55, 0x71, 0x91, // 0x4D M
0x11, 0x39, 0x55, 0x73, 0x91, // 0x4E N
0x0E, 0x31, 0x51, 0x71, 0x8E, // 0x4F O
0x1E, 0x31, 0x5E, 0x70, 0x90, // 0x50 P
0x0C, 0x32, 0x56, 0x72, 0x8D, // 0x51 Q
0x1E, 0x31, 0x5E, 0x74, 0x92, // 0x52 R
0x0F, 0x30, 0x4E, 0x61, 0x9E, // 0x53 S
0x1F, 0x24, 0x44, 0x64, 0x84, // 0x54 T
0x11, 0x31, 0x51, 0x71, 0x8E, // 0x55 U
0x11, 0x31, 0x51, 0x6A, 0x84, // 0x56 V
0x11, 0x31, 0x55, 0x7B, 0x91, // 0x57 W
0x11, 0x2A, 0x44, 0x6A, 0x91, // 0x58 X
0x11, 0x2A, 0x44, 0x64, 0x84, // 0x59 Y
0x1F, 0x22, 0x44, 0x68, 0x9F, // 0x5A Z
0x07, 0x24, 0x44, 0x64, 0x87, // 0x5B [
0x10, 0x28, 0x44, 0x62, 0x81, // 0x5C \
0x1C, 0x24, 0x44, 0x64, 0x9C, // 0x5D ]
0x04, 0x2A, 0x51, 0x60, 0x80, // 0x5E ^
0x00, 0x20, 0x40, 0x60, 0x9F, // 0x5F _
0x0A, 0x2A, 0x40, 0x60, 0x80, // 0x60 `
0x00, 0x2E, 0x52, 0x72, 0x8D, // 0x61 a
0x10, 0x30, 0x5E, 0x71, 0x9E, // 0x62 b
0x00, 0x2F, 0x50, 0x70, 0x8F, // 0x63 c
0x01, 0x21, 0x4F, 0x71, 0x8F, // 0x64 d
0x00, 0x2E, 0x5F, 0x70, 0x8E, // 0x65 e
0x04, 0x2A, 0x48, 0x7C, 0x88, // 0x66 f
0x00, 0x2F, 0x50, 0x73, 0x8F, // 0x67 g
0x10, 0x30, 0x56, 0x79, 0x91, // 0x68 h
0x04, 0x20, 0x4C, 0x64, 0x8E, // 0x69 i
0x00, 0x26, 0x42, 0x72, 0x8C, // 0x6A j
0x10, 0x30, 0x56, 0x78, 0x96, // 0x6B k
0x0C, 0x24, 0x44, 0x64, 0x8E, // 0x6C l
0x00, 0x2A, 0x55, 0x71, 0x91, // 0x6D m
0x00, 0x36, 0x59, 0x71, 0x91, // 0x6E n
0x00, 0x2E, 0x51, 0x71, 0x8E, // 0x6F o
0x00, 0x3E, 0x51, 0x7E, 0x90, // 0x70 p
0x00, 0x2F, 0x51, 0x6F, 0x81, // 0x71 q
0x00, 0x33, 0x54, 0x78, 0x90, // 0x72 r
0x00, 0x23, 0x44, 0x62, 0x8C, // 0x73 s
0x08, 0x3C, 0x48, 0x6A, 0x84, // 0x74 t
0x00, 0x32, 0x52, 0x72, 0x8D, // 0x75 u
0x00, 0x31, 0x51, 0x6A, 0x84, // 0x76 v
0x00, 0x31, 0x55, 0x7B, 0x91, // 0x77 w
0x00, 0x32, 0x4C, 0x6C, 0x92, // 0x78 x
0x00, 0x31, 0x4A, 0x64, 0x98, // 0x79 y
0x00, 0x3E, 0x44, 0x68, 0x9E, // 0x7A z
0x06, 0x24, 0x48, 0x64, 0x86, // 0x7B {
0x04, 0x24, 0x44, 0x64, 0x84, // 0x7C |
0x0C, 0x24, 0x42, 0x64, 0x8C, // 0x7D }
0x00, 0x27, 0x5C, 0x60, 0x80, // 0x7E ~
};
#define CS_PIN 10
#define CLK_PIN 13
#define DIN_PIN 11
#define SERIAL_TX 1
#define SERIAL_RX 0
#define MAX_SEG 1
#define MATRIX_ADDRESS 0
SoftwareSerial mySerial(SERIAL_RX, SERIAL_TX); //Serial
LedControl mat = LedControl(DIN_PIN, CLK_PIN, CS_PIN, MAX_SEG); // MAX7219
void setup() {
mySerial.begin(9600);
mySerial.println("Start thingy");
mat.shutdown(0, false);
mat.setIntensity(0, 7);
mat.clearDisplay(0);
}
void loop() {
for (int i = 0; i <= 127; i++) {
mySerial.print("ascii: 0x");
mySerial.print(i, HEX);
mySerial.print(", row: ");
for (int row = 0; row < 5; row++) {
mat.setRow(MATRIX_ADDRESS, row, flipByte(Font5x5[i*5+row]));
mySerial.print("0x");
mySerial.print(Font5x5[i*5+row], HEX);
mySerial.print(", ");
}
mat.setLed(0,1,5,false);
mat.setLed(0,2,6,false);
mat.setLed(0,3,5,false);
mat.setLed(0,3,6,false);
mat.setLed(0,4,7,false);
mySerial.println(" ");
delay(300);
}
}
byte flipByte(byte c)
{
c = ((c>>1)&0x55)|((c<<1)&0xAA);
c = ((c>>2)&0x33)|((c<<2)&0xCC);
c = (c>>4) | (c<<4) ;
return c;
}