0

LED の点滅を過ぎて、次のスケッチを使用して LED のフェードを正常に開始しました。

void setup() {
    pinMode(12, OUTPUT);
}

void loop() {
    for (int i=0;i<255;i++) {
        analogWrite(12,i);
    delay(10);
    }
}

for(int i=254;i=0;i--)しかし、フェードアウトするわけにはいかないことに気付きました。なぜ私はそれを必要としないのですか?loop()自動的に最初の状態に戻る機能はありますか?

4

2 に答える 2

3

なぜ私はそれを必要としないのですか?

なぜですか?

もちろんそうです。このプログラムでは、LED がゆっくりと明るくなり、すぐに消えて最初からやり直します。それは鋸歯状のプロファイルであり、IMO が不十分です。

誰もが自分の LED が滑らかに明るくなってから暗くなることを望んでいます。これははるかにクールです:

void setup() {
    pinMode(13, OUTPUT);
}

boolean fadein = true;
int bright = 0;

void loop() {

  // adjust brightness based on current direction
  if(fadein) {
    bright += 1;
  }
  else {
    bright -= 1;
  }

  // apply current light level
  analogWrite(13,bright);

  // when get to full bright, turn around
  if(255 == bright) {
    fadein = false;
  }
  // when get to full off, turn around
  if(0 == bright) {
    fadein = true;
  }  

  delay(10);
  // The delay is just a placeholder
  // here is where your program could do other useful things
  // in addition to the cool LED fade in fade out
  return;
}
于 2013-08-09T06:26:19.663 に答える