基于Arduino 使用矩阵键盘
矩阵键盘
矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O则作为输入。
组成结构
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
4X3矩阵键盘 (4X3矩阵键盘电路图)
如上图所示,4X3键盘总共有7个引脚,分别是4行和3列,行数从下往上我们做了一个标号4-7号,列数从右往左做了标号1-3号,这个标号在编辑程序的时候需要对应到控制器的引脚里。接下来我们来看看定义键盘输入值和引脚的程序。 Mixly图形化程序,比较直观
以上程序我们可以看出使用二维数组来定义了每个按键里的值,图片里的定义是按照键盘来排列的,我们也可以放入自己需要的字符,根据需要改吧,在下面一个模块是矩阵键盘跟Arduino控制器连接的引脚号,列管脚1-3分别插到控制器里的3#-5#,行管脚4-7分别插到控制器6#-9#。 定义值和引脚连接搞定后我们就需要读取按键的值了,我们可以看到矩阵键盘我们定义了一个名称“KEY”,我们用串口打印这个“KEY”就行 附上完整程序 代码: - #include <Keypad.h>
- char KEYPAD_4_3_hexaKeys[4][3] = {{'1', '2', '3'},{'4', '5', '6'},{'7', '8', '9'},{'*', '0', '#'}};
- const byte KEY_ROWS = 4;
- const byte KEY_COLS = 3;
- byte KEY_rowPins[KEY_ROWS] = {9,8,7,6};
- byte KEY_colPins[KEY_COLS] = {5,4,3};
- Keypad KEY = Keypad(makeKeymap(KEYPAD_4_3_hexaKeys), KEY_rowPins, KEY_colPins, KEY_ROWS, KEY_COLS);
- void setup(){
- Serial.begin(9600);
- }
- void loop(){
- Serial.println(KEY.getKey());
- }
复制代码接线方式
4X3矩阵键盘 <------> Arduino uno 1 <------> 3 2 <------> 4 3 <------> 5 4 <------> 6 5 <------> 7 6 <------> 8 7 <------> 9
扩展资料 (4X3矩阵键盘 工业键)
(4X3矩阵键盘 工业键电路图)
从上图电路我们可以看出,工业键盘的键盘号排列有点不同,还是按照行从下往上列从右往左排列就行。
4X3矩阵键盘 <------> Arduino uno 1 <------> 4 2 <------> 9 3 <------> 5 4 <------> 6 5 <------> 3 6 <------> 7 7 <------> 8 程序跟上面一样
4X4矩阵键盘 (4X4矩阵键盘电路图)
如上图所示,4X4键盘总共有8个引脚,分别是4行和4列,行数从下往上我们做了一个标号5-8号,列数从右往左做了标号1-4号,这个标号在编辑程序的时候需要对应到控制器的引脚里。接下来我们来看看定义键盘输入值和引脚的程序。 Mixly图形化程序,比较直观
以上程序我们可以看出使用二维数组来定义了每个按键里的值,图片里的定义是按照键盘来排列的,我们也可以放入自己需要的字符,根据需要改吧,在下面一个模块是矩阵键盘跟Arduino控制器连接的引脚号,列管脚1-4分别插到控制器里的3#-6#,行管脚5-8分别插到控制器7#-10#。 定义值和引脚连接搞定后我们就需要读取按键的值了,我们可以看到矩阵键盘我们定义了一个名称“KEY”,我们用串口打印这个“KEY”就行 附上完整程序 代码: - #include <Keypad.h>
- char KEYPAD_4_4_hexaKeys[4][4] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'*', '0', '#', 'D'}};
- const byte KEY_ROWS = 4;
- const byte KEY_COLS = 4;
- byte KEY_rowPins[KEY_ROWS] = {10,9,8,7};
- byte KEY_colPins[KEY_COLS] = {6,5,4,3};
- Keypad KEY = Keypad(makeKeymap(KEYPAD_4_4_hexaKeys), KEY_rowPins, KEY_colPins, KEY_ROWS, KEY_COLS);
- void setup(){
- Serial.begin(9600);
- }
- void loop(){
- Serial.println(KEY.getKey());
- }
复制代码接线方式
4X4矩阵键盘 <------> Arduino uno 1 <------> 3 2 <------> 4 3 <------> 5 4 <------> 6 5 <------> 7 6 <------> 8 7 <------> 9 8 <------> 10
|