[英]Arduino Uno Code Creates Incorrect Time Values
您好,我有一个最近买的Arduino Uno板,我试图在板上运行秒表功能。 我有两个瞬时按钮。 按下第一个按钮后,它将自程序开始使用millis()函数以来将经过的时间存储在startTime变量中。 稍后在按下第二个按钮时,它还会使用相同的millis()函数在endTime变量中存储自程序开始运行以来经过的时间。 然后,它通过将startTime与endTime分开来计算timeElapsed。
我在两者之间使用Serial.print进行调试。 我得到了期望的startTime和endTime值,它们是正确的,但是我的elapsedTime值似乎无法正常工作。
关于这个问题有一个线索。 经过的时间旨在返回endTime-startTime的值。 但是,它始终返回的是endTime-773的值。 我不确定这到底意味着什么,但我认为这可能是有助于解决我的问题的有用信息。
void setup(){
Serial.begin(9600); //start the Serial.moniter on the computer
pinMode(2, INPUT); //Set the button attached to pin 2 as an input
pinMode(3, INPUT); //Set the button attached to pin 3 as an input
}
void loop(){
int buttonStateTwo = digitalRead(2); //stores either a HIGH(button pressed) or LOW(button not being pressed) value
int buttonStateThree = digitalRead(3);
unsigned int startTime;
unsigned int endTime;
unsigned int elapsedTime;
if(buttonStateTwo == HIGH){ //if the button is pressed
startTime = millis();
Serial.print(" The start time is: ");
Serial.print(startTime);
delay(1000); //pause the program for a second
}
if(buttonStateThree == HIGH){
endTime = millis();
Serial.print(" The end time is: ");
Serial.print(endTime);
elapsedTime = endTime-startTime; //this returns an incorrect value
Serial.print(" The time elapsed is: ");
Serial.println(elapsedTime); //incorrect value
delay(1000);
}
}
如果有人经过多年努力解决这个问题并采取了许多不同的方法,请有人帮助我,我将非常感激。
变量的声明在loop()
执行。 这意味着每次Arduino库调用loop()
,这些变量可以包含任意值,这些值可能与上次调用loop()
时的值相同或不同。 请将声明移到模块作用域(在loop()
之前和之外),以便仅创建一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.