超ゆるゆる技術ブログ🌷

プログラミング勉強中です。

【Arduino】Lチカやってみた③

明るくなったり暗くなったり

f:id:dd15038:20180702215307j:plain
今回はArduinoのスケッチ例から「fade」を使って動かしていきたいと思います。
これもLチカと呼んでいいのかな…?
まぁ、LEDが何かしら動作してればいいや😏

プログラム

//LEDを明るくしたり暗くする
//intでそれぞれ定義する
int led = 9;     //LEDの初期値が9
int brightness = 0;  //brightnessの初期値が0
int fadeAmount = 5; //fadeAmountの初期値が5

void setup() {
  //デジタルピン9番をLED出力設定
  pinMode(led, OUTPUT);
}

void loop() {
  //PWM波をデジタルピン9番にデューティ比brightness/255で出力
  analogWrite(led, brightness);

  //次のloop()実行時のbrightnessの値
  //fadeamountを加算していく
  brightness = brightness + fadeAmount;

  //brightnessの値が0以下または255以上であるときfadeAmountの符号反転
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }
  //最後に30ミリ秒待つ
  delay(30);
}

こんな感じです。
PWM(Pulse Width Modulation)波とは、スイッチのオンとオフのスピードを切り替える電圧の制御をする波のことです。
制御は、デューティ比という比率によって行われます。

このスケッチのデューティ比は、周期の最大値255÷brightnessの値と決められています。
brightnessの値は、ループ関数の中に書かれた条件と式によって変化を続けます。
このおかげでデューティ比もまたずっと変化するので、電力が強くなったり弱くなったりが繰り返されます。

そのためLEDも、明るくなったり暗くなったりし続けます。

回路図

f:id:dd15038:20180703005646p:plain
「Lチカやってみた①」とほとんど同じ回路ですが、つないでいるピンが違います。
今回はデジタル9番ピンを使っています。

実際のようす

f:id:dd15038:20180703012151g:plain
gif動画ですが…。
もわ~と明るくなったり暗くなったりを繰り返しています。
ホタルの光みたいですね。

感想

最初は難しいプログラムなのかなと思ったけど、わかれば簡単でした。
スケッチ例、他にもいろいろ試していきたいです。