1

不能完全找到我正在寻找的东西。

我编写了以下代码:

    /*
  Traffic Lights
  Turns on an LED on in a predetermined sequence - Red, Red Amber, Green, Amber, Red.

  This example code is in the public domain.
 */

// determine the colours and the pins that they are connected to
int green = 12; //green
int amber = 8; //amber
int red = 4; //red

// the setup routine runs once when you press reset:
void setup() 
{                
  // initialize the digital pins as an output.
  pinMode(green, OUTPUT); 
  pinMode(amber, OUTPUT);
  pinMode(red, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(red, HIGH); //red on
  delay(1250);
  digitalWrite(amber, HIGH); //red amber on
  delay(1250);
  digitalWrite(red, LOW);
  digitalWrite(amber, LOW); //red amber off
  delay(250);
  digitalWrite(green, HIGH); //green on
  delay(1250);
  digitalWrite(green, LOW); //green off
  delay(250);
  digitalWrite(amber, HIGH); //amber on
  delay(1250);
  digitalWrite(amber, LOW); //amber off
  delay(250);
  digitalWrite(red, HIGH); //red on
  delay(1250);


}

我非常喜欢 Arduino;我的一个开发者朋友试图让我在我的代码工作之前“测试”一切(TDD 方法),我的想法是在开始时同时打开所有灯;例如,只需一点点就可以很简单地做到这一点'digitalWrite(green, HIGH);。但是,我不希望它循环,我只希望它们只出现一次大约 2 秒钟以表明它们正在工作,然后进入循环。

任何人都可以提供帮助吗?

4

1 回答 1

1

只需在您的设置功能中执行此操作!请记住,当您的 Arduino 通电(或重置)时,设置只运行一次,然后调用循环函数,直到设备断电。

我会尝试以下代码段:

void setup() 
{                
  // initialize the digital pins as an output.
  pinMode(green, OUTPUT); 
  pinMode(amber, OUTPUT);
  pinMode(red, OUTPUT);
  //Turn the pins on to check your wiring
  digitalWrite(green, HIGH);
  digitalWrite(amber, HIGH);
  digitalWrite(red, HIGH);
  delay(1000);
  digitalWrite(green, LOW);
  digitalWrite(amber, LOW);
  digitalWrite(red, LOW);
}

编辑:在 ifdef 中包含调试代码可能也是值得的:

#ifdef DEBUG
...
#endif 

编辑:澄清(回应评论):

#ifdef DEBUG
  digitalWrite(green, HIGH);
  digitalWrite(amber, HIGH);
  digitalWrite(red, HIGH);
  delay(1000);
  digitalWrite(green, LOW);
  digitalWrite(amber, LOW);
  digitalWrite(red, LOW);
#endif 

这样,您可以保留调试代码,并在不再调试时“将其关闭”。

于 2014-07-09T20:04:26.380 回答