我正在为Arduino的游戏结束计时器。基本上,程序从串口获取命令,翻转引脚,等待5秒,然后触发复位命令。它有效,但它不是第一次'43'通过序列出现。它将在第二次完成并在此之后正常工作。这是为什么?我错过了什么?
#include <elapsedMillis.h>
elapsedMillis timeElapsed;
int pin = 13;
unsigned int wait = 5000;
//// SERIAL //////////////////////////////////////////////
byte incomingByte; // from python
int command = 0; // command (1 = open, 2 = close)
int servoCom = 0; // the incoming command shit
void setup()
{
Serial.begin(9600);
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
Serial.println("setup done");
// wait 20 ms
delay(20);
}
void loop()
{
if (Serial.available() > 0)
{
incomingByte = Serial.read();
command = incomingByte;
servoCom = ServoGo(command);
}
if (servoCom == 43){
digitalWrite(pin, HIGH);
// run for 5 seconds
if (timeElapsed >= wait)
{
// trigger reset
servoCom = 70;
}
}
if(servoCom == 70){
// reset
digitalWrite(pin, LOW);
timeElapsed = 0;
}
}
int ServoGo(int com)
{
Serial.println("!inServoGo");
Serial.println(com);
return com;
}
答案 0 :(得分:1)
timeElapsed
未初始化为零;在第一个命令70之后它被重新初始化,然后只有命令23正常工作。