#include <string.h>
#include <EEPROM.h>
/*2-dimensional array of column pin numbers:*/
int C[] = {13,12,11,10,9,8,7,6};
const int LONG_PRESS_TIME = 2000; // 1000 milliseconds
int PB = 2;
int speed_val=60;
int speed_con=0;
char dynamic_data;
char Data,current_data;
String datastring;
int datalength;
int char_to_process;
int count=0;
char ALPHA[] ={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0X00,0x00, //Blank
0x00,0xfc,0x3a,0x11,0x11,0x3a,0xfc,0x00,0x00,0x00, //A
0x00,0xff,0x99,0x99,0x99,0x66,0x00,0x00,0x00,0x00, //B
0x00,0x3c,0x42,0x81,0x81,0x81,0x42,0x00,0x00,0x00, //C
0x00,0xff,0x81,0x81,0x81,0x42,0x3c,0x00,0x00,0x00, //D
0x00,0xff,0x89,0x89,0x89,0x81,0x00,0x00,0x00,0x00, //E
0x00,0xff,0x09,0x09,0x09,0x01,0x00,0x00,0x00,0x00, //F
0x00,0x3c,0x42,0x81,0x91,0x91,0x72,0x00,0x00,0x00, //G
0x00,0xff,0x10,0x10,0x10,0xff,0x00,0x00,0x00,0x00, //H
0x00,0x81,0x81,0xff,0x81,0x81,0x00,0x00,0x00,0x00, //I
0x00,0x41,0x81,0x81,0x7f,0x01,0x01,0x00,0x00,0x00, //J
0x00,0xff,0x18,0x24,0x42,0x81,0x00,0x00,0x00,0x00, //K
0x00,0xff,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00, //L
0x00,0xff,0x02,0x04,0x04,0x02,0xff,0x00,0x00,0x00, //M
0x00,0xff,0x06,0x08,0x10,0x60,0xff,0x00,0x00,0x00, //N
0x00,0x3c,0x42,0x81,0x81,0x42,0x3c,0x00,0x00,0x00, //O
0x00,0xff,0x11,0x11,0x11,0x0e,0x00,0x00,0x00,0x00, //P
0x00,0x7e,0x91,0xa1,0x41,0xbe,0x00,0x00,0x00,0x00, //Q
0x00,0xff,0x11,0x31,0x51,0x8e,0x00,0x00,0x00,0x00, //R
0x00,0x4e,0x89,0x91,0x91,0x62,0x00,0x00,0x00,0x00, //S
0x00,0x01,0x01,0xff,0x01,0x01,0x00,0x00,0x00,0x00, //T
0x00,0x7f,0x80,0x80,0x80,0x80,0x7f,0x00,0x00,0x00, //U
0x00,0x3f,0x40,0x80,0x40,0x3f,0x00,0x00,0x00,0x00, //V
0xff,0x40,0x20,0x10,0x10,0x20,0x40,0xff,0x00,0x00, //W
0x00,0xc3,0x24,0x18,0x18,0x24,0xc3,0x00,0x00,0x00, //X
0x03,0x04,0x08,0xf0,0x08,0x04,0x03,0x00,0x00,0x00, //Y
0xc1,0xa1,0x91,0x89,0x85,0x83,0x00,0x00,0x00,0x00 //Z
};
void speed_set()
{
count = count +1;
if (count > 2)
count =0;
if (count ==0)
speed_val =60;
else if(count == 1)
speed_val= 40;
else
speed_val =20;
}
void setup()
{
Serial.begin(115200);
pinMode(PB, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(PB), speed_set, FALLING);
pinMode(C[0],OUTPUT);
pinMode(C[1],OUTPUT);
pinMode(C[2],OUTPUT);
pinMode(C[3],OUTPUT);
pinMode(C[4],OUTPUT);
pinMode(C[5],OUTPUT);
pinMode(C[6],OUTPUT);
pinMode(C[7],OUTPUT);
for (int i=0;i<8;i++)
{
digitalWrite(C[i],HIGH);
}
DDRA = 0xFF;
PORTA =0;
}
void loop()
{
Serial.println("Enter Data AND else enter AS END CHARACTER $ ");
do{
while(!Serial.available());
if(Serial.available()>0)
{
Data = Serial.read();
datastring += Data;
}
}while(Data !='$');
Serial.print("Data String is : ");
Serial.println(datastring);
Serial.flush(); // FLUSHING THE SERIAL BUFFER
datalength = datastring.length();
Serial.print("Data length is ");
Serial.println(datalength);
int j=10;
for (int y=0;y<datalength-1;y++) // HOW MANY CHARACTERS, USERS HAS ENTERED
{
current_data=datastring[y];
char_to_process = int(current_data); // GETTING THE DECIMAL EQUIVALENT
// Initializing EEPROM by 0 // MAX 512 CHARACTERS CAN BE STORED
for (int i= 0; i<=9;i++)
EEPROM.write(i, 0);
// copying the char in to a dynamic_data array
for (int i= 0; i<=9;i++)
{
dynamic_data=ALPHA[(char_to_process -64)*10 + i];// VALUE OF ALPHA ARRAY STORE AT THAT INDEX
EEPROM.write(j+i, dynamic_data);
}
j=j+10;
}
Serial.println("Displaying data on to Matrix");
for(int k=0; k<=10;k++) // THIS WILL DISPLAY DATA 1
for(int x=0;x<(datalength-1)*10;x++) // ADDRESS
{
for(int a=0;a<speed_val;a++)
{
for (int i=0;i<8;i++)
{
digitalWrite(C[i],LOW);
PORTA = EEPROM.read(i+x); // DATA CORRESPONDING TO THAT COLOUMN
delay(1);
digitalWrite(C[i],HIGH);
}
}
}
delay(10);
}
mega:SCL
mega:SDA
mega:AREF
mega:GND.1
mega:13
mega:12
mega:11
mega:10
mega:9
mega:8
mega:7
mega:6
mega:5
mega:4
mega:3
mega:2
mega:1
mega:0
mega:14
mega:15
mega:16
mega:17
mega:18
mega:19
mega:20
mega:21
mega:5V.1
mega:5V.2
mega:22
mega:23
mega:24
mega:25
mega:26
mega:27
mega:28
mega:29
mega:30
mega:31
mega:32
mega:33
mega:34
mega:35
mega:36
mega:37
mega:38
mega:39
mega:40
mega:41
mega:42
mega:43
mega:44
mega:45
mega:46
mega:47
mega:48
mega:49
mega:50
mega:51
mega:52
mega:53
mega:GND.4
mega:GND.5
mega:IOREF
mega:RESET
mega:3.3V
mega:5V
mega:GND.2
mega:GND.3
mega:VIN
mega:A0
mega:A1
mega:A2
mega:A3
mega:A4
mega:A5
mega:A6
mega:A7
mega:A8
mega:A9
mega:A10
mega:A11
mega:A12
mega:A13
mega:A14
mega:A15
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
led4:A
led4:C
led5:A
led5:C
led6:A
led6:C
led7:A
led7:C
led8:A
led8:C
led9:A
led9:C
led10:A
led10:C
led11:A
led11:C
led12:A
led12:C
led13:A
led13:C
led14:A
led14:C
led15:A
led15:C
led16:A
led16:C
led17:A
led17:C
led18:A
led18:C
led19:A
led19:C
led20:A
led20:C
led21:A
led21:C
led22:A
led22:C
led23:A
led23:C
led24:A
led24:C
led25:A
led25:C
led26:A
led26:C
led27:A
led27:C
led28:A
led28:C
led29:A
led29:C
led30:A
led30:C
led31:A
led31:C
led32:A
led32:C
led33:A
led33:C
led34:A
led34:C
led35:A
led35:C
led36:A
led36:C
led37:A
led37:C
led38:A
led38:C
led39:A
led39:C
led40:A
led40:C
led41:A
led41:C
led42:A
led42:C
led43:A
led43:C
led44:A
led44:C
led45:A
led45:C
led46:A
led46:C
led47:A
led47:C
led48:A
led48:C
led49:A
led49:C
led50:A
led50:C
led51:A
led51:C
led52:A
led52:C
led53:A
led53:C
led54:A
led54:C
led55:A
led55:C
led56:A
led56:C
led57:A
led57:C
led58:A
led58:C
led59:A
led59:C
led60:A
led60:C
led61:A
led61:C
led62:A
led62:C
led63:A
led63:C
led64:A
led64:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
r5:1
r5:2
r6:1
r6:2
r7:1
r7:2
r8:1
r8:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r