c++ - 为什么这个引脚在命令 43 第一次进入时不触发?

标签 c++ timer arduino logic

我正在使用 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;
}

最佳答案

timeElapsed 在设置时未初始化为零;它在第一个命令 70 后重新初始化,然后只有命令 23 正常工作。

关于c++ - 为什么这个引脚在命令 43 第一次进入时不触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35509787/

相关文章:

c++ - 定义 BLECharacteristic 时 Genuino 101 不运行

c++ - 为什么我的子窗口对鼠标事件没有反应?

ios - 如何显示hh :mm:ss in NSTimer?

ios - Swift,应用程序在模拟器的后台运行,但不在设备上运行

java - libGDX:设备关闭时 CountDownTimer 仍在运行

javascript - io.on 不是函数

c++ - 收到共享冲突打开文件代码 32

c++ - 检查 COM 指针是否存在

c++ - 为什么 `std::pair` 允许使用用户定义的已删除 move 构造函数从类类型的右值进行初始化?

java - Android 中通过蓝牙发送数据