# 0104 - 4x4 keypad
```clike=
const byte KEY_COL = 4; //const => 常數
const byte KEY_ROW = 4;
// column(行) vs row(列)
//***********************
char keymap[KEY_ROW][KEY_COL] = {
{'1' , '2' , '3' , 'A'} ,
{'4' , '5' , '6' , 'B'} ,
{'7' , '8' , '9' , 'C'} ,
{'*' , '0' , '#' , 'D'}
};
const byte COL_PINs[KEY_COL] = {9 , 8 , 7 , 6};
const byte ROW_PINs[KEY_ROW] = {13 , 12 , 11 , 10};
byte i,j;
byte scanVal; //value
void setup() {
Serial.begin(9600);
for(i =0; i < 4 ; i++) {
pinMode(COL_PINs[i] , OUTPUT);
pinMode(ROW_PINs[i] , INPUT);
digitalWrite(COL_PINs[i], HIGH);
digitalWrite(ROW_PINs[i], HIGH);
//腳位是INPUT的時候 drigtalWrite 卻是HIGH 這是上拉電阻
//因為鍵盤連線的腳位沒有接觸時,可以視為一個銅線,會接收環境的干擾訊號
//需要「上拉電阻」阻隔訊號
}
}
void loop() {
for(i = 0; i < 4 ; i++){
for(j = 0; j < 4 ; j++){
digitalWrite(COL_PINs[j] , LOW);
scanVal = digitalRead(ROW_PINs[i]);
if(scanVal == LOW){
Serial.println(keymap[i][j]);
delay(200);
digitalWrite(COL_PINs[j] , HIGH);
break;
}
digitalWrite(COL_PINs[j] , HIGH);
}
}
}
```