繁体   English   中英

Arduino Uno代码创建错误的时间值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM