【雕爷学编程】Arduino动手做(62)---1排4键薄膜开关四位电容按键模块3

在这里插入图片描述

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

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验六十二:1X4薄膜按键模块 1排4键薄膜开关 1/2/3/4键按键单片机外接控制键盘扩展键盘

在这里插入图片描述

1X4薄膜开关传感器模块的几个实验

一、程序一:串口显示薄膜开关传感器模块按键数值
1、Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序一:串口显示1x4薄膜开关传感器模块按键数值
*/

#include <Keypad.h>//导入Keypad库

const byte ROWS = 1; //矩阵键盘行数
const byte COLS = 4; //矩阵键盘列数

//定义当我们按键时要显示的符号
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', '4'},
};

byte rowPins[ROWS] = {6}; //行的针脚连接的接口
byte colPins[COLS] = {5, 4, 3, 2}; //列的针脚连接的接口

//初始化我们提交 NasiZnakovi 的 NewKeypad 类,连接行和列的引脚以及行和列的数量
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(9600);//开始串口通讯
}

void loop() {
  //到 pritisnutiZnak 变量,我们保存按下的键
  char customKey = customKeypad.getKey();
  // 我们使用 getKey() 函数获取我们按下的键

  if (customKey) {
    Serial.println(customKey);
    //检查键盘是否被按下,如果是,我们在串口监视器上显示
  }
}

2、实验串口返回情况

在这里插入图片描述

3、实验场景图

在这里插入图片描述

二、程序二:薄膜开关模块按键控制LED灯的亮灭与闪烁
1、实验开源仿真编程(Linkboy V4.63)

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

在这里插入图片描述

3、实验接线与实验结果
1x4薄膜开关 Arduio
1 GND
2 5
3 4
4 3
5 2

实验结果:
按下1#按键,点亮LED灯;
按下2#按键,熄灭LED灯;
按下3#按键,LED灯反转;
按下4#按键,LED灯闪烁。

三、程序三:四位薄膜开关模块模拟控制发射导弹程序(串口显示)

1、实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述

2、实验串口返回情况

在这里插入图片描述
3、实验接线与实验结果
1x4薄膜开关 Arduio
1 GND
2 5
3 4
4 3
5 2

实验结果:
按下1#按键,串口显示:十秒倒计时…;
按下2#按键,串口显示:按下启动键,LED灯闪烁;
按下3#按键,串口显示:10,9,8,7,6,5,4,3,2,1;
按下4#按键,串口显示:发射导弹!LED灯长亮。

四、程序四:循环计数器
1、Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   程序四:循环计数器
*/

#include <Keypad.h>//导入Keypad库

const byte ROWS = 1; //一行,矩阵键盘行数
const byte COLS = 4; //四列,矩阵键盘列数

//定义当我们按键时要显示的符号
char keys[ROWS][COLS] = {
  {'1', '2', '3', '4'},
};

byte rowPins[ROWS] = {6}; //行的针脚连接的接口
byte colPins[COLS] = {5, 4, 3, 2}; //列的针脚连接的接口

//初始化我们提交 NasiZnakovi 的 NewKeypad 类,连接行和列的引脚以及行和列的数量
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);

unsigned long loopCount = 0; //循环计数为0
unsigned long timer_ms = 0;

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

  // 尝试使用不同的 debounceTime 设置来查看它的影响
  // 你的循环每秒运行的次数。
  // 将其设置为低于 1 毫秒的任何值。
  kpd.setDebounceTime(10);  // 设置去抖时间(mS)
}

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

  //报告 1 秒内通过循环的次数。这会给
  //你对 debounceTime 改变了多少的相对概念
  //代码的速度。如果你设置一个高 debounceTime 你的 loopCount 将
  //看起来不错,但是你的按键会开始感觉迟钝。
  if ((millis() - timer_ms) > 1000) {
    Serial.print("你的循环代码运行了");
    Serial.print(loopCount);
    Serial.println(" 最后一秒的次数");
    loopCount = 0;
    timer_ms = millis();
  }
  loopCount++;
  if (key)
  Serial.println(key);//串口显示按键值
}

2、实验接脚
1x4薄膜开关 Arduio
1 6
2 4
3 5
4 2
5 3

3、实验串口返回情况

在这里插入图片描述
五、程序五:按下3键控制LED亮或灭,长按4键LED闪烁
1、Arduino参考开源代码

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

#include <Keypad.h>//导入Keypad库

const byte ROWS = 1; //一行,矩阵键盘行数
const byte COLS = 4; //四列,矩阵键盘列数

//定义当我们按键时要显示的符号
char keys[ROWS][COLS] = {
  {'1', '2', '3', '4'},
};

byte rowPins[ROWS] = {6}; //行的针脚连接的接口
byte colPins[COLS] = {5, 4, 3, 2}; //列的针脚连接的接口

//初始化我们提交 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);
  }
}

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

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

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

2、实验模块接脚

1x4薄膜开关 Arduio
1 6
2 4
3 5
4 2
5 3

3、实验串口返回情况

在这里插入图片描述
4、实验结果
(1)按下1#按键,串口显示:1;
(2)按下2#按键,串口显示:2;
(3)按下3#按键,串口显示:3,点动控制LED亮或灭(双稳态);
(4)按下4#按键,串口显示:4,长按4键LED一直闪烁。

程序六:使用1X4薄膜开关控制9克舵机、LED与蜂鸣器
1、实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述

3、实验结果
(1)按下1#按键,LED与蜂鸣器双稳态反转;
(2)按下2#按键,LED亮,蜂鸣器响,舵机正转50度;
(3)松开2#按键,LED灭,蜂鸣器不响,舵机反转50度;
(4)按下3#按键,LED闪烁三次;
(5)按下4#按键,LED一直闪烁。

4、实验场景图

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在「雕爷学编程Arduino动手做的实验中,四位遥控是指使用了2262/2272四路无线遥控套件M4非锁接收板配合四无线遥控器模组的实验。根据提供的引用内容,有两个示例程序可以用来接收遥控信号。 第一个示例程序是实验程序二,在Arduino参考开源代码中给出了实现接收的简单示例。程序通过RCSwitch库实现了接收器的初始化,然后进入循环,在循环中判断是否有可用的遥控信号,如果有,则获取接收到的值,并显示在串口上。 第二个示例程序是实验程序一,也是通过RCSwitch库实现的。和实验程序二类似,程序初始化了接收器,并进入循环。在循环中,如果有可用的遥控信号,则调用output函数,将接收到的值、位长、延迟和原始数据显示在串口上。 根据这两个示例程序,你可以根据实际情况选择使用其中的一个或两个来进行四位遥控实验。你需要根据引脚连接和遥控器的编码方式进行相应的配置和调试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【雕爷学编程Arduino动手做(103)---四路无线遥控套件](https://blog.csdn.net/weixin_41659040/article/details/125220869)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

驴友花雕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值