admin管理员组文章数量:1571949
Arduino笔记实验(初级阶段)—Keypad小键盘
文章目录
- Arduino笔记实验(初级阶段)—Keypad小键盘
- 前言
- 一、电路图
- 二、集成库方案(Keypad)
- 三方集成库
- 代码
- 实验效果展示
- 三、基于Arduino原生方案
- 4*4按键膜结构图
- 代码
- 实验效果展示
- 四、实验核心技术点-矩阵开关
- 实验总结
前言
自学笔记,没有历史知识铺垫(省略百度部分),博主基于C++代码编程,函数可以参考官网,或者下载Arduino IDE(工具),查看菜单:帮助->参考,系列性的记录核心的实用笔记,本章主要记录Arduino Keypad小键盘的实验与分析
IDE工具:Arduino IDE
组件:
- Arduino UNO R3 *1
- 面包版 *1
- 杜邦线若干
- 4x4按键膜(Keypad) *1
一、电路图
二、集成库方案(Keypad)
三方集成库
Keypad文档
三方集成库优点是便于使用,三方库在实际项目开发中应用非常普遍,由于对底层进行封装,不太利于基础学习,建议初学者养成阅读源代码的习惯
代码
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
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}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {8, 9, 10, 11}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
Serial.println(key);
}
}
实验效果展示
三、基于Arduino原生方案
4*4按键膜结构图
此处仅做了按键的基础功能代码逻辑演示,能够实现不依赖三方库进行基础按键操作
逻辑其实很简单,4*4按键膜结构本质是一套二维数组(矩阵)开关,3个核心点:
- 使用同4*4按键膜结构的二位数组(矩阵),记录按键输出内容
- 建立两个记录矩阵行和列的数组,通过双重for循环来遍历两个数组的所有元素
- 利用数字引脚的INPUT和OUTPUT功能,检测二维数组中,哪个元素的电平被拉低,哪个元素就是被触发的元素
代码
const byte ROW_NUM = 4;
const byte COL_NUM = 4;
const byte rowPins[ROW_NUM] = {2, 3, 4, 5};
const byte colPins[COL_NUM] = {8, 9, 10, 11};
const char keymap[ROW_NUM][COL_NUM] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
void setup() {
Serial.begin(9600);
for (byte r = 0; r < sizeof(rowPins); r++) {
pinMode(rowPins[r], INPUT);
digitalWrite(rowPins[r], HIGH);
}
for (byte c = 0; c < sizeof(colPins); c++) {
pinMode(colPins[c], OUTPUT);
digitalWrite(colPins[c], HIGH);
}
}
void loop() {
for (byte r = 0; r < sizeof(rowPins); r++) {
for (byte c = 0; c < sizeof(colPins); c++) {
digitalWrite(colPins[c], LOW);
int upKey = digitalRead(rowPins[r]);
if (upKey == LOW) {
Serial.println(keymap[r][c]);
delay(300);
digitalWrite(rowPins[r], HIGH);
}
digitalWrite(colPins[c], HIGH);
}
}
}
实验效果展示
四、实验核心技术点-矩阵开关
通过上述两种方案实验可以看出,keypad实际上可以通过矩阵开关来实现,了解矩阵开关如何接入开发版中,可以扩展到更多的应用中.
如通过有限的引脚实现更多的功能,4*4按键膜,通过8个引脚可以获得16种按键操作,实际上,上面提供的三方库还可以监听按下,松开,长按等事件的监听,甚至通过多按键组合实现更大的操作空间,可以在日后的开发中灵活运用是关键所在
实验总结
本章主要以4x4按键膜为实验对象,扩展其实现原理,希望通过其原理,以后能够运用在更多场景中
版权声明:本文标题:Arduino笔记实验(初级阶段)—Keypad小键盘 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727707337a1126497.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论