#define NO_KEY 0
char KeyCh[4][4] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t RowPin[4] = { 6, 7, 8, 9 }; // Pins connected to C1, C2, C3, C4
uint8_t ColPin[4] = { 2, 3, 4, 5 }; // Pins connected to R1, R2, R3, R4
void setup() {
int i;
Serial.begin(9600);
for(i=0;i<4;i++){
pinMode(RowPin[i], OUTPUT);
digitalWrite(RowPin[i], HIGH);
pinMode(ColPin[i], INPUT_PULLUP);
}
}
char GetKey(){
int col,row,last;
char kch=0;
last=3;
for(row=0;row<4;row++){
digitalWrite(RowPin[last], HIGH);
digitalWrite(RowPin[row], LOW);
last=row;
for(col=0;col<4;col++){
if(digitalRead(ColPin[col])==LOW){
kch=KeyCh[col][row];
delay(2);
}
}
}
return kch;
}
void loop() {
char key = GetKey();
if (key != NO_KEY) {
Serial.println(key);
while(GetKey());
}
}