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

Setup関数でそれを行うだけです!セットアップは 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 に答える