|

楼主 |
发表于 2020-2-28 16:05:52
|
显示全部楼层
程序之三:矩阵键盘部分测试按键'*'和 '#'控制LED灯(板载13脚)
- /*
- 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
- 实验一百四十:YL-004老款20按键独立键盘 跑马灯矩阵键盘模块
- 程序之三:矩阵键盘部分测试按键'*'和 '#'控制LED灯(板载13脚)
- */
- #include <Keypad.h>
- const byte ROWS = 4; //四行
- const byte COLS = 3; //三列
- //定义键盘按钮上的符号
- char keys[ROWS][COLS] = {
- {'1', '2', '3'},
- {'4', '5', '6'},
- {'7', '8', '9'},
- {'*', '0', '#'}
- };
- byte rowPins[ROWS] = {2, 3, 4, 5}; //连接到键盘的行插脚
- byte colPins[COLS] = {6, 7, 8}; //连接到键盘的列插脚
- Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
- byte ledPin = 13;
- boolean blink = false;
- boolean ledPin_state;
- void setup() {
- Serial.begin(9600);
- pinMode(ledPin, OUTPUT); // 将数字管脚设置为输出
- 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)); // 将LED引脚从Hi2Lo或Lo2Hi更改
- delay(100);
- }
- }
- // 处理一些特殊事件
- void keypadEvent(KeypadEvent key) {
- switch (keypad.getState()) {
- case PRESSED:
- if (key == '#') {
- digitalWrite(ledPin, !digitalRead(ledPin));
- ledPin_state = digitalRead(ledPin); // 记住LED状态,亮或不亮
- }
- break;
- case RELEASED:
- if (key == '*') {
- digitalWrite(ledPin, ledPin_state); // 从开始闪烁前恢复LED状态
- blink = false;
- }
- break;
- case HOLD:
- if (key == '*') {
- blink = true; // 按住*键时,LED闪烁
- }
- break;
- }
- }
复制代码
|
|