使用Arduino开发板实现一个3*3矩阵键盘的代码和硬件教程

当我小的时候,我拿到一本书《PC升级与维护大全》(Upgrading And Repairing Pcs),现在已经到第22版了。这是第一本向我解释PC架构的书。我当时考虑过,当键盘上有101个键的时候,AT键盘的接口有多少引脚?那是我第一次了解到键盘矩阵。

令我吃惊的并不是键盘矩阵本身,而是在键盘内部有一个完全独立的8位微控制器。早期的键盘可能已经使用了P8049AH,现在仍然会有一些库存可供选购。这个想法让我着迷。需要一个完整的计算机运行键盘,才能使用我的“真实”计算机。为什么要采用微控制器那样复杂的元件?

键盘矩阵的主要优势是减少了捕获大量按键的输入信号所需的引脚数量。即使PC键盘上有101个键,也不意味着需要有一个101个引脚的微控制器。也不需要超过100根电线的电缆。

我将首先解释简单的四个和九个按钮的例子。

这里写图片描述

更多内容请参考以下链接:https://www.yiboard.com/thread-780-1-1.html

以下是使用Arduino控制4*4矩阵键盘和数码管的代码和接线方式。 代码部分: ``` #include <Keypad.h> #include <TM1637Display.h> // 定义数码管引脚 const int CLK_PIN = 2; const int DIO_PIN = 3; TM1637Display display(CLK_PIN, DIO_PIN); // 定义矩阵键盘的引脚 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] = {9, 8, 7, 6}; // 连接到行引脚的Arduino引脚 byte colPins[COLS] = {5, 4, A3, A2}; // 连接到列引脚的Arduino引脚 Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // 存储输入的密码 String password = ""; void setup() { // 初始化数码管 display.setBrightness(0x0f); // 初始化串口通信 Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { if (key == '#') { checkPassword(); } else { password += key; display.showNumberDecEx(password.toInt()); } } } void checkPassword() { if (password == "1234") { // 假设正确的密码是1234 display.clear(); display.showNumberDecEx(8888); // 输入正确时在数码管上显示8888 delay(2000); display.clear(); password = ""; // 重置密码 } else { display.clear(); display.showNumberDecEx(9999); // 输入错误时在数码管上显示9999 delay(2000); display.clear(); password = ""; // 重置密码 } } ``` 接线方式: - 数码管的CLK引脚连接到Arduino的2号引脚,DIO引脚连接到Arduino的3号引脚。 - 矩阵键盘的行引脚依次连接到Arduino的9、8、7和6号引脚。 - 矩阵键盘的列引脚依次连接到Arduino的5、4、A3和A2号引脚。 上述的代码和接线方法可以实现Arduino控制4*4矩阵键盘,输入密码后在数码管上显示相应信息。请根据实际情况调整引脚号与密码的设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值