我的arduino程序有问题。我是初学者。 每次上传此程序时,“henti”始终为HIGH。它应该在5秒后低。
请帮帮我!!
void loop()
{
if digitalRead(manual)==HIGH && digitalRead(pln_in)==HIGH && digitalRead(gen_in)==LOW)
{
keadaan1();
}
}
void keadaan1()
{
digitalWrite(henti, HIGH);
digitalWrite(gen_out, LOW);
digitalWrite(normal, LOW);
digitalWrite(emergency, LOW);
digitalWrite(start, LOW);
digitalWrite(busi, LOW);
delay(5000);
digitalWrite(pln_out, HIGH);
digitalWrite(henti, LOW);
}
答案 0 :(得分:1)
在ArduinoLand中,loop
函数在循环中被调用,令人惊讶: - )
换句话说,就像你有主要功能一样:
int main (void) {
setup();
for (;;) { // just call loop() over and over.
loop();
}
return 0;
}
这意味着henti
变高,等待五秒,然后变低。然后,假设digitalRead
条件仍为真(a),它会循环并且立即再次变高。
如果你希望它在再次变高之前保持低位,你应该在delay(something)
函数的右大括号之前放置另一个keadaan1()
。
如果您希望该位代码仅运行一次,请将其放入setup()
函数或停止循环函数返回,例如:
for (;;); // do nothing, forever.
(a)这是一些调试经验。在代码中填充一些调试语句可以极大地帮助找出问题所在,例如:
void setup()
{
Serial.begin(9600);
Serial.println("Starting...");
delay(1000);
}
void loop()
{
if (digitalRead(manual) == HIGH &&
digitalRead(pln_in) == HIGH &&
digitalRead(gen_in) == LOW)
{
Serial.println("Calling keadaan1");
keadaan1();
}
}