我的Arduino在等待1分钟后停止

Ale*_*lex 4 arduino arduino-ide

我有一个小的Arduino编程,只是在第一次循环后停止.我可能会忽略一些事情......但我对发生的事情一无所知.

这是代码

int led = 13;
//int led = 10;
unsigned long windtime = 1000 * 2; // 2 seconds
unsigned long pausetime = 1000 * 60; // 1 minute

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);

  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  Serial.print("Wind");
  digitalWrite(led, HIGH);
  delay(windtime);               

  Serial.print("Pause");
  digitalWrite(led, LOW);    
  delay(pausetime);
}
Run Code Online (Sandbox Code Playgroud)

我只使用Serial作为调试回声.

任何的想法?

Ale*_*lex 6

您似乎需要将数字文字显式设置为long(L)并使用它们.否则它不起作用.如果有人能解释是否有任何类型的自动转换它会很棒但是在那之前只需使用:

unsigned long seconds = 1000L; // !!! SEE THE CAPITAL "L" USED!!!
unsigned long minutes = seconds * 60;
unsigned long hours = minutes * 60; 
Run Code Online (Sandbox Code Playgroud)

然后像往常一样简单地使用延迟(millisec):

delay(5 * minutes);
Run Code Online (Sandbox Code Playgroud)

它对我有用.


Jac*_*man 0

无符号长整型可能被覆盖。作为一种调试方法,请尝试硬编码常量值,例如delay(6000)六秒。这将证明您的硬件是否正常工作。

最后,不确定延迟值是否应该为unsigned long,我通常使用int而不是 60,000,这大于intArduino 上的(2 个字节)可以存储的值。请记住,嵌入式系统实际上是较小的系统。

此示例: http: //arduino.cc/en/Tutorial/BlinkWithoutDelay 意味着延迟值必须是 int。

希望这可以帮助。