Arduino计时器计数重置为65,但应重置为70
我试图显示一个计时器,它的计数高达70秒,但一旦达到65秒,它就会重新启动(循环)。这是在我添加Arduino计时器计数重置为65,但应重置为70,arduino,arduino-uno,Arduino,Arduino Uno,我试图显示一个计时器,它的计数高达70秒,但一旦达到65秒,它就会重新启动(循环)。这是在我添加basetime=millis()之后发生的和currtime=millis()-基准时间。(当我删除这两个参数时,它会起作用,但我添加了它,因为我希望millis()在达到70秒时重置为零)。 有人能帮我吗? 如果需要我的完整代码,请告诉我。谢谢 void循环(){ 基准时间=毫秒(); 秒=0; 秒2=0; 分钟=0; 对于(秒==0;秒检查以下各项: basetime和currtime应在设置例
basetime=millis()之后发生的代码>和currtime=millis()-基准时间代码>。(当我删除这两个参数时,它会起作用,但我添加了它,因为我希望millis()
在达到70秒时重置为零)。
有人能帮我吗?
如果需要我的完整代码,请告诉我。谢谢
void循环(){
基准时间=毫秒();
秒=0;
秒2=0;
分钟=0;
对于(秒==0;秒检查以下各项:
basetime和currtime应在设置例程之前很久定义
Arduino样式
unsigned long currtime, basetime;
还是初始化c风格
uint32_t currtime = 0;
uint32_t basetime = 0;
并消除代码中的延迟-这将在该点停止处理。
无延迟闪烁中的更多信息(内置示例Arduino IDE->文件->示例->02,数字->无延迟闪烁)
65秒的问题是一个int的翻滚(可能被编译器设置为uint16_t->它可以容纳的最大值为2^16-1(65.535),然后翻滚(bethoven)通常我们不重置arduino-millis(),但处理翻滚。for(秒==0;…)应该是for(秒=0;…)看不到所有的代码。这些变量使用什么类型的变量。这在一些数学步骤中很重要。65秒的数字让我觉得你可能在某处溢出了一个int。