![]() | 欢迎关注「凌顺实验室」微信公众号 |
实现效果
占用8个IO口 ,实现16个不同的按键
可应用于计算器,电子门锁,等等需要输入的场景
BOM表
Arduino Uno *1
4x4 矩阵键盘 *1
跳线若干
引脚说明
4X4 矩阵按键 原理图
PCB 图 接线序号按PCB图的引脚序列号接线
接线
Arduino 4x4 矩阵键盘
PIN 2 <-----> 8 (行)
PIN 3 <-----> 7 (行)
PIN 4 <-----> 6 (行)
PIN 5 <-----> 5 (行)
PIN 6 <-----> 4 (列)
PIN 7 <-----> 3 (列)
PIN 8 <-----> 2 (列)
PIN 9 <-----> 1 (列)
开源程序
需要下载库文件
https://github.com/Chris--A/Keypad
#include <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] = {2,3,4,5}; //定义行引脚
byte colPins[COLS] = {6,7,8,9}; //定义列引脚
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//实例化Keypad 对象
void setup(){
Serial.begin(9600);
}
void loop(){
char key = keypad.getKey(); //新建一个key 变量 用于获取键盘当前的值
if (key != NO_KEY){
Serial.println(key);
}
}
程序实现思路讲解
1
#include <Keypad.h> //加载库
2
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'}
};//建立二维数组,用于设置按键的输出字符
3
byte rowPins[ROWS] = {2,3,4,5}; //定义行引脚
byte colPins[COLS] = {6,7,8,9}; //定义列引脚
4
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //实例化Keypad 对象
5
char key = keypad.getKey();//新建一个key 变量 用于获取键盘当前的值