如何解决Arduino的在无限循环内使用计时器进行While循环
我有一个arduino leonardo,我想在无限循环内进行一个具有给定工作边界的while循环。也就是说,无限循环将重复十分钟的while循环。有可能做到吗?
#include <Mouse.h>
#include <Keyboard.h>
#define timer 5 // running time of the while loop in minutes
void setup(){
Mouse.begin();
randomSeed(analogRead(0) + analogRead(1));
pinMode(3,INPUT_PULLUP);
}
void loop(){
if(!digitalRead(3)){ // starting work through the button click on pin 3
delay(200);
doAction();
}
}
void doAction () {
int last_keyboard = millis();
int start_time = millis();
while(millis()-start_time<=timer*60000){
// action here
}
delay(100);
}
}
解决方法
根据millis()函数的Arduino API参考,它返回一个 unsigned long ,它对于保存“自Arduino开发板开始运行当前程序以来经过的毫秒数是必需的”。 ATmega板有16-bit integers,所以您的问题是整数溢出。您的整数太小。请改用 unsigned long 。可能将UL添加到60000,以指定无符号的长号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。