//4x4薄膜鍵盤範例程式
const int seg[8]={2,3,12,13,A0,A1,A2,A3};// 宣告顯示信號接腳
const int code[10] = { // 宣告七節顯示碼陣列
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; // 0~9字型
#include "Adafruit_Keypad.h"
const byte ROWS = 4; // 列數(橫的)
const byte COLS = 4; // 行數(直的)
//鍵盤上每一個按鍵的名稱
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {11, 10, 9, 8}; //定義列的腳位
byte colPins[COLS] = {7, 6, 5, 4}; //定義行的腳位
//初始化鍵盤
Adafruit_Keypad customKeypad = Adafruit_Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
// put your setup code here, to run once:
for(int i=0;i<8;i++){
pinMode(seg[i], OUTPUT);
}
Serial.begin(9600);
customKeypad.begin();
Serial.println("KeyPad Test...");
show(0);
}
//----------------------------------------------------------------------
void show(int a) { //秀出傳入值,範圍限定0~9999
for(int k=0;k<8;k++){ // 輸出顯示信號(並列資料串列輸出)
if(bitRead(code[a],k)) digitalWrite(seg[k],1); //不亮
else digitalWrite(seg[k],0); //會亮
}
delay(1); //
}
void loop() {
// 開始偵測使用者的按鍵狀態
customKeypad.tick();
//判斷按了哪一個鍵
while(customKeypad.available()){
keypadEvent e = customKeypad.read();
byte k=e.bit.KEY;
Serial.println(k);
show(k-48);
}
delay(10);
}