void setup() {
volatile char * dirA=0x21;
volatile char * dirC=0x27;
volatile char * dirF=0x30;
volatile char * dirK=0x107;
*dirA=0XFF;
*dirC=0x0F;
*dirF=0x0F;
*dirK=0xF0;
Serial.begin(9600);
}
void loop() {
int keys[4][4]={
{1,2,3,65},
{4,5,6,66},
{7,8,9,67},
{42,0,35,68}
};
volatile char * outF=0x31;
volatile char * inpK=0x106;
int val=0;
for(int k=0;k<4;){
for(int i=0;i<4;i++){
*outF=1<<i;
char x=*inpK;
if(x!=0x00){
int j;
for(j=0;j<4;j++){
if(x&(1<<j))break;
}
if(keys[i][j]<10){
// Serial.println(keys[i][j]);
display_four_digit_number(keys[i][j]);
val=val*10+keys[i][j];
Serial.println(val);
k++;
}
else
{
Serial.println(char(keys[i][j]));
}
}
}
delay(200);}
display_four_digit_number(val);
}
void display_four_digit_number(int N){
const char segments[] = {
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
};
char digit_on[4]={0x0E,0x0D,0X0B,0x07}; //This array stores hex for which digit should be on in particular time slot
unsigned volatile char * outA=0x22;
unsigned volatile char * outC=0x28;
int digits_i[4]={0}; // array to store the digits ,initially all zeroes
int k=3;
int x=N;
// this iteravtively stores the digits from last digit
while(x!=0){
int rem=x%10;
digits_i[k]=rem;
x=x/10;
k--;
}
for(int l=0;l<200;l++)
for(int j=0;j<4;j++){
*outC=digit_on[j];
*outA=segments[digits_i[j]];
delay(1);
*outA=0x00;
delay(1);
}
delay(500);
}
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
sevseg1:A
sevseg1:B
sevseg1:C
sevseg1:D
sevseg1:E
sevseg1:F
sevseg1:G
sevseg1:DP
sevseg1:DIG1
sevseg1:DIG2
sevseg1:DIG3
sevseg1:DIG4
sevseg1:COM
sevseg1:CLN
keypad1:R1
keypad1:R2
keypad1:R3
keypad1:R4
keypad1:C1
keypad1:C2
keypad1:C3
keypad1:C4
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2