嗨,哈伯族居民! 今天,我决定为Arduino制作完整的键盘指南。
注意! 本文主要针对初学者!在许多项目中,需要创建用户输入的可能性。 如果您需要实现大量按钮(相对),那么分别连接它们将既漫长又不合理。 为此,最好选择一个键盘,但是像其他选择一样,您需要自觉地进行操作。 键盘的类型是什么?如何与它们交互?
在全球范围内,这种类型的所有模块都可以分为两大类:
矩阵和
模拟 。
矩阵键盘
最简单,最便宜和最流行的键盘类型。 它相对容易制造,并占据了arduino模块的大部分市场。 它通常看起来像这样:


工作原理
您可以通过研究下图来了解此键盘的工作原理:

要了解按下了哪个按钮,您需要向模块的前四个触点施加信号,并观察从第二个触点返回的信号。 但是不要担心,您将不得不手动编写八个引脚的处理算法-现成的库“ keypad.h”将帮助我们解决这个问题,因此,我们不必重新发明轮子。
电路板连接
连接模块本身
在本文中,我将使用以下连接图:

您可能有一个问题:“为什么我决定从第二个到第九个使用引脚,而跳过零个和第一个?” -事实是某些模块将它们用作接收和发送数据的RX和TX通道。 例如,一个蓝牙模块。 因此,考虑到可能会将项目添加到其他模块中,因此决定不使用这些连接引脚。
素描写作
首先,为了能够使用该库连接代码中的键盘,您需要将其安装在设备上。 可以按以下步骤进行操作:在Arduino IDE本身中,单击
Sketch-> Connect Library-> Manage Libraries ...或使用键盘快捷键“ Ctrl + Shift + I”。 在搜索驱动器中的“ keypad.h”(不带括号)中,然后按“安装”。
安装后,继续编写草图:
#include <Keypad.h> // const byte ROWS = 4; // const byte COLS = 4; // char hexaKeys[ROWS][COLS] = {// , , {'1','4','7','*'}, {'2','5','8','0'}, {'3','6','9','#'}, {'A','B','C','D'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; // byte colPins[COLS] = {9, 8, 7, 6}; // // : Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600);// } void loop(){ char customKey = customKeypad.getKey();// if (customKey){// - Serial.println(customKey);// } }
利弊
缺点
- 需要连接太多引脚才能工作。 如果您不是要创建计算器或密码锁,而是创建一个较大的项目,那么这是一个大问题,在该项目中您仍然需要使用大量不同的模块-也许它们只是没有足够的引脚。
- 模块的执行质量太低:没有人能保证持续稳定的信号。 原始键盘的制作水平不是很高,如果您完全在速卖通上订购,那么很可能必须用烙铁固定中国工程师的边框,才能实现稳定的操作。
- 使用了一个额外的库,该库也将占用微控制器的内存,而该内存已经不多了。 如果您正在编写具有许多功能和计算的大型项目,并且需要手动从键盘读取数据或使用模拟键盘,则帐户上的每个字节。
优点
模拟键盘
工作原理
在模拟键盘中,电阻器用于改变电压电平,并且信号通过一个通道,该通道实际上连接到板上的模拟引脚。 通过查看下图可以了解所有内容的排列方式:

电路板连接
连接非常简单,但可能因特定的键盘而异。 在本文中,我将考虑将
这种中文模拟键盘与Ali一起使用的示例。
因此:我们将键盘的模拟输出连接到板上的任何模拟引脚,将板上的VCC引脚连接到3.3V(不要看键盘本身的铭文上写着5V-这是一个错误),以及板上的GND和模块上的GND。 您可以使用以下方案:

素描写作
无需使用第三方库,因为 一切都非常简单明了。 这是代码本身,它读取按下的按钮并向端口监视器显示其编号,从1到16(从左到右,从上到下)或0(如果没有按下任何按钮)。
unsigned const short int KEYPAD_PIN = 0;
利弊
优点
- 连接非常简单
- 只有一根针
- 节省您不用在库下的内存
- 提供稳定的操作(前提是您一次不能按下多个按钮)
缺点
- 比矩阵键盘贵
- 唯一的购买方式很可能是从中国订购,并且送货需要一些时间
总结
就个人而言,我建议使用模拟键盘,因为它们通常(多数情况下)质量更高,并且连接起来非常简单。 最主要的是要注意制造商提供的按下按钮的值表,如果没有,则可以自己进行这些测量,并在端口监视器中显示模拟端口的值,以便稍后在代码中使用它们。 但是,选择永远是您的选择:使用标准的便宜选项或为某些情况下的显着优势多付钱。
这就是我的全部。 将您的问题留在评论中,发表您的意见,我们将在哈伯开放空间见面!