看 Sugar 讲矩阵键盘的使用

本文介绍了如何使用ESP8266物联网模块连接和编程控制矩阵键盘。矩阵键盘是一种节省引脚资源的多按键解决方案。文章详细说明了矩阵键盘的接线方法、使用步骤,并提供了在VSCode中使用PlatformIO和Arduino库进行编程的示例,包括读取列状态和键盘扫描的实现。此外,还分享了一段10秒的矩阵键盘控制ESP8266小车的视频,验证了方案的有效性。
摘要由CSDN通过智能技术生成

背景介绍:
4*4矩阵键盘 8 根线能获取 16 个键的状态,在需要多个按键的场合特别适用。
Sugar 因授课需要在网上查了不少讲解矩阵键盘的资料,觉得可以再努努力让这个知识更易懂一点。
下面就来看看 Sugar 怎么努力的吧。

矩阵键盘是什么

矩阵键盘就是按一定规律连在一起的一堆开关。

Sugar 从深圳优信电子买到的矩阵键盘长成这样的(Sugar 买过不少散电子元件,优信从未出过错,所以在这里提个名)。

这一堆开关的连接情况是这样的:

矩阵键盘怎么用

矩阵键盘需要接到单片机上用。

一、怎么连线

网上能找到的是接到 STM32、Arduino 和 C51 单片机上的。Sugar 今天给出个不同的:接到 ESP8266 物联网模块上用。接法如下图:

实物连接如下图:

注意:GPIO16 在 ESP8266 内部没有上拉电阻,所以要外接上拉电阻,上图中 Sugar 接了一个 10k 的色环电阻当作 GPIO16 的上拉电阻。其余接口(GPIO12、GPIO13、GPIO14)可配置内部上拉,配置方式是(以 Arduino 开发为例):

pinMode(12, INPUT_PULLUP);
pinMode(13, INPUT_PULLUP);
pinMode(14, INPUT_PULLUP);

二、怎么使用

1、默认状态下,让输出口统一输出低电平,如下图:

不难看出行引脚(1、2、3、4 引脚)都是低电平,因为没有按键按下,所以列引脚(5、6、7、8 引脚)被上拉都是高电平。这样在读取 GPIO12、GPIO13、GPIO14、GPIO16 的时候都会读到高电平。

2、当有按键被按住的时候(例如按下 K7)如下:

聪明的你一定会发现,按矩阵键盘的连接方式,不论按下 K3、K7、K11 或 K15 都会导致 GPIO14 读到低电平。也就是说在 GPIO14 读到低电平时并不能确定是哪一行的按键被按住了,所以需要进一步操作来确认:究竟是哪一行的按键被按住了。

3、逐行扫描确定按键的方法是:输出端(GPIO4、GPIO0、GPIO2 和 GPIO15)依次输出低电平,每次输出后都去读一下输入端,直到输入端读到低电平为止。系列图示如下:




我们看到在逐行扫描过程中,只有当扫描到被按住的键所在行列的时候,输入端才会读到低电平。那么我们就可以通过记录行号列号来确定是哪一个键被按住了。

把上面的图片连起来,整体的过程是这样的:

怎么编程

Sugar 在 VSCode 下使用 platformio 写代码,用的是 Arduino 库。

为了避免像很多网上的程序那样使用过多的移位操作,Sugar 使用 union struct 的方式来标记行号列号,如下:

typedef union{
   
  struct{
   
    uint8_t r1 : 1;
    uint8_t r2 : 1;
    uint8_t r3 : 1;
    uint8_t r4 : 1;
    uint8_t c1 :<
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值