1条回答 默认 最新
- WoodrowKing 2022-10-03 16:44关注
先安装Bounce2库 https://blog.csdn.net/hp150119/article/details/114358170 ,用来消抖,然后写一个按钮灯控,再加个时间记录和串口输出就可以了
#include <Bounce2.h> int BUTTON_PIN = 2;//按钮连接的针脚 Bounce2::Button button = Bounce2::Button();//实例化一个抖动对象 int LED = 13; // 灯 int ledState = LOW; int onTime=0; void setup() { pinMode(LED, OUTPUT); digitalWrite(LED, ledState); button.attach( BUTTON_PIN, INPUT_PULLUP); // 初试化按钮 button.interval(5); //间隔是5ms Serial.begin(9600);//用于串口输出 } void ledOn(){ ledState = HIGH; digitalWrite(LED, ledState ); } void ledOff(){ ledState = LOW; digitalWrite(LED, ledState ); Serial.println("LED亮"+String(onTime/100)+"s"); // 计算输出亮灯时间 onTime=0; } void loop() { button.update(); //更新 if(ledState==HIGH){ if(onTime>=1000) ledOff(); else{ onTime++; delay(10); // 10ms一个循环 } } if ( button.pressed() ) { if(ledState==HIGH) ledOff(); else ledOn(); } }
再来一个不掉库的消抖版本
int BUTTON_PIN = 2;//按钮连接的针脚 int bounce_time = 5; // 抖动时间 long last_time = millis(); int LED = 13; // 灯 int ledState = LOW; int buttonClick = HIGH; // 按钮状态 long last_led_time = millis(); void setup() { pinMode(LED, OUTPUT); pinMode(BUTTON_PIN,INPUT_PULLUP); digitalWrite(LED, ledState); Serial.begin(9600);//用于串口输出 } void ledOn(long currentTime){ ledState = HIGH; last_led_time = currentTime; digitalWrite(LED, ledState ); } void ledOff(long currentTime){ ledState = LOW; digitalWrite(LED, ledState ); Serial.println("LED亮"+String((currentTime-last_led_time)/1000)+"s"); // 计算输出亮灯时间 } bool getButton(long currentTime){ int reading = digitalRead(BUTTON_PIN); if(reading==buttonClick) last_time = currentTime; if(currentTime-last_time>bounce_time){ buttonClick=reading; if(reading==LOW) return true; } return false; } void loop() { long currentTime = millis(); if(ledState==HIGH){ if(currentTime-last_led_time>=10000) ledOff(currentTime); } if ( getButton(currentTime) ) { if(ledState==HIGH) ledOff(currentTime); else ledOn(currentTime); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用 2
悬赏问题
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?
- ¥15 matlab(相关搜索:紧聚焦)
- ¥15 基于51单片机的厨房煤气泄露检测报警系统设计