【雕爷学编程】Arduino动手做(26)---4X4轻触开关矩阵键盘模块3

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十六:4X4键盘矩阵按键板控制模块 16按键板 轻触按键微动开关 单片机IO口外扩

在这里插入图片描述

4X4矩阵键盘模块的实验环境
一、4X4矩阵键盘模块实验所需硬件清单
4X4矩阵键盘模块X1
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
LED发光二极管(蓝色)X1
高电平触发有源蜂鸣器模块X1
高电平触发单路5V继电器模块X1
Proto Shield 原型扩展板(带mini面包板)X1

在这里插入图片描述
二、4X4矩阵键盘模块实验所需软件平台
代码编程 Arduino IDE (版本1.8.19)
仿真编程 Linkboy (版本V4.6.3)
图形编程 Mind+ (版本 V1.7.0 RC2.0)以及编玩边学(线上平台)

三、4X4矩阵键盘模块实验接线
4X4矩阵键盘模块上有一个8针的杜邦排线接口,理论上可以直接插到0-7脚上,但0,1脚用于串口通信,所以只能选择2~13脚,这里实验选用了2-9脚。

Keypad Pin R1 –> Arduino Pin 2
Keypad Pin R2 –> Arduino Pin 3
Keypad Pin R3 –> Arduino Pin 4
Keypad Pin R4 –> Arduino Pin 5
Keypad Pin C1 –> Arduino Pin 6
Keypad Pin C2 –> Arduino Pin 7
Keypad Pin C3 –> Arduino Pin 8
Keypad Pin C4 –> Arduino Pin 9

在这里插入图片描述

四、安装“Keypad.h”驱动库
1、打开 https://github.com/
2、搜索“Keypad”,下载安装红点处的文件

在这里插入图片描述

在这里插入图片描述

4X4矩阵键盘模块的几个实验
程序一:通过串口显示16位键盘的16个键值

1、Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序一:通过串口显示16位键盘的16个键值
*/

#include <Keypad.h>  //加载库

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] = {2, 3, 4, 5}; //定义行引脚
byte colPins[COLS] = {6, 7, 8, 9}; //定义列引脚

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//实例化Keypad 对象

void setup() {
  Serial.begin(9600);
}

void loop() {
  char key = keypad.getKey(); //新建一个key 变量 用于获取键盘当前的值
  if (key != NO_KEY) {
    Serial.println(key);
  }
}

2、实验串口返回情况

在这里插入图片描述
3、实验场景图

在这里插入图片描述

二、程序二:4X4矩阵键盘模块的简单测试

1、实验开源图形编程(Mind+、Mixly、编玩边学)

在这里插入图片描述

实验串口返回情况

在这里插入图片描述

程序三:设定按键S1、S2、S3和S16控制LED的亮灭状态
1、实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述

2、实验结果:
按下1#按键,点亮LED灯;
松开1#按键,熄灭LED灯;
按下2#按键,LED灯反转一次;
按下3#按键,LED灯连续闪烁
按下16#按键,点亮LED灯;
松开16#按键,熄灭LED灯。

3、实验场景图

在这里插入图片描述

程序四:按下1键控制LED亮或灭,长按2键LED闪烁

1、Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序四:按下1键控制LED亮或灭,长按2键LED闪烁
*/

#include <Keypad.h>  //加载库

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] = {2, 3, 4, 5}; //定义行引脚
byte colPins[COLS] = {6, 7, 8, 9}; //定义列引脚

//初始化我们提交 NasiZnakovi 的 NewKeypad 类,连接行和列的引脚以及行和列的数量
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
byte ledPin = 13;//定义LED接脚为D13

boolean blink = false;
boolean ledPin_state;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);              //将数字引脚13设置为输出
  digitalWrite(ledPin, HIGH);           //打开 LED
  ledPin_state = digitalRead(ledPin);   //存储初始 LED 状态,LED 亮时为高电平
  keypad.addEventListener(keypadEvent); //为这个键盘添加一个事件监听器
}

void loop() {
  char key = keypad.getKey();

  if (key) {
    Serial.println(key);
  }

  if (blink) {
    digitalWrite(ledPin, !digitalRead(ledPin));
    delay(100);
  }
}

//处理一些特殊事件,按下1键控制LED亮灭,长按4键LED闪烁
void keypadEvent(KeypadEvent key) {
  switch (keypad.getState()) {
    case PRESSED:
      if (key == '1') { //按下1键时反转LED的亮灭状态
        digitalWrite(ledPin, !digitalRead(ledPin));
        ledPin_state = digitalRead(ledPin);     
        //记住 LED 状态,亮或不亮
      }
      break;

    case RELEASED:
      if (key == '2') {
        digitalWrite(ledPin, ledPin_state);   //从开始闪烁之前恢复 LED 状态
        blink = false;
      }
      break;

    case HOLD:
      if (key == '2') {
        blink = true;    //连续按住2键时LED闪烁
      }
      break;
  }
}

2、实验串口返回情况

在这里插入图片描述
3、实验结果
(1)按下1#按键,串口显示:1,点动控制LED亮或灭(双稳态);
(2)按下2#按键,串口显示:2,长按4键LED一直闪烁,松开停止;
(3)按下3#按键,串口显示:3;
(4)按下4#按键,串口显示:A;
(5)按下5#按键,串口显示:4;
(6)按下6#按键,串口显示:5;
(7)按下7#按键,串口显示:6;
(8)按下8#按键,串口显示:B;
(9)按下9#按键,串口显示:7;
(10)按下10#按键,串口显示:8;
(11)按下11#按键,串口显示:9;
(12)按下12#按键,串口显示:C;
(13)按下13#按键,串口显示:*;
(14)按下14#按键,串口显示:0;
(15)按下15#按键,串口显示:#;
(16)按下16#按键,串口显示:D。

程序五:设定按键密码锁,控制舵机
1、实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述

2、实验结果
(1)按下1#按键,点亮LED灯,松开LED灯灭;
(2)按下2#按键,点亮LED灯,松开LED灯灭;
(3)按下8#按键,点亮LED灯,舵机转动60度,开锁;
(4)按下12#按键,点亮LED灯,松开LED灯灭;
(5)按下其他按键,没有反应。

3、实验场景图

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值