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、实验场景图