PR

ArduinoでふんわりLEDを点滅させる方法

explaining-how-to-softly-light-LEDs-with-arduino-eyecatch
explaining-how-to-softly-light-LEDs-with-arduino-eyecatch

 今回はPWM制御を使ってArduinoでLEDをふんわり点滅させましょう。ふんわりというのは、ON /OFFを一瞬で切り替えるのではなく、ジワジワと明るくなって暗くなる。という光り方のことです。

 通常、digitalWriteのコマンドを使うと、ほぼ肉眼ではわからないスピードでLEDのONOFFが実行されます。ですから、切り替わっている途中のLEDの様子などは捉えられないため、昔ながらの豆電球のような温かみがなく、ちょっと味気ない感じになっているんですね。※味気ないと感じているのは私個人の感想です。

 豆電球の話が出てきたので、ここで一つ動画をご紹介します。豆電球のON /OFFとLEDのON /OFFの切り替わりのスピードに注目してください。

豆電球とLEDだと光り方が結構違う。

 私は豆電球のふわっと光る方が好みです。あなたはどっち派ですか??

この記事を読むことでわかること

LEDをArduinoでふわっと点滅させる方法が理解できる。

自己紹介

サラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

注意

本ブログはアフィリエイトを用いた広告を掲載しています。

今回使用するもの:ArduinoとLEDと抵抗

 今回使用するのは、ArduinoとLEDと抵抗。それから、配線するためのブレッドボードやジャンパーワイヤーです。すでに電子工作キットを1つでもお持ちなら、これらの部品はすでにお持ちのはずです。

 ただ、Arduino本体だけを購入しただけで、他にまだ電子工作キットをもっていないよ!という場合には、こちらのような便利なキットがありますので、こちらを1つ持っておくと良いかもしれません。

 一旦基本的なパーツはこれくらいにしておいて、他にやりたいことができたらそれらを追加で購入していくのがおすすめです。

 例えばLCDのような、好きな文字を表示させる液晶モニタが操作したければそちらを追加で購入すればいいですし、モーターで何かを動かしたいならそちらを購入すればいいので追加費用が明確ですよね。

配線方法と接続するべきピンはどこなのか?PWMがポイント

 配線方法は、LEDをチカチカさせるいわゆる【Lチカ】と同じです。ただし、今回注意すべきなのは、ふんわり点灯が目的だということです。

 ふんわり点灯を実現するためには、analogWrite()という指令が使えるピンにLEDを接続する必要があります。このピンは、Arduinoシリーズのどれを使うかによって異なります。

 具体的にはこの表のように記載されているピンを使用する必要があります。

 この表だけではイメージが沸かないかもしれないので、こちらのArduinoのピンの割り当ても見たほうがいいですね。Arduino UNO R3を例にします。

ArduinoUNOR3のピン配置
https://content.arduino.cc/assets/A000066-full-pinout.pdf

 先ほどanalogWrite()に対応した表をご覧いただきましたが、Arduino UNO R3は、[3,5,6,9,10,11]番のピンが対応しています。それをこのピン配置の図で見てみると、例えばD3を見ると、このように、~マークが入っていることがわかります。

ArduinoUNOR3でPWMに対応しているD3ピン

 このマークがanalogWrite()が使えるピンということです。ここで補足ですが、analogWriteとは、PWM制御によって、疑似的に電圧を上下させることができる機能のことです。

 これだけ聞いても???となるかもしれません。そもそもPWM制御ってなんだ?という場合には、こちらに記事を書いていますので、こちらをご覧ください。

 簡単に言ってしまうと、ArduinoのPWM制御の機能を使うことで、電圧を疑似的に上下させることでLEDにかける電圧を上下させる。つまりLEDの明るさが制御できる。ということです。

PWM制御できるピンを選択して配線した例

 それでは具体的にArduino UNO R3を例にして、LEDをふんわり点灯させるための配線方法をこちらに示します。

ArduinoにLEDを配線した状態
Arduino UNO R3でLEDをふんわり点灯させるための配線方法

 ポイントは、さきほどもお伝えしたように、PWM制御ができるピンとLEDをつなぐことです。今回はD3ピンを使っています。~3となっているので、PWM制御ができますね。

スケッチ(ソースコード)

 それでは配線ができたところで、Arduinoに書き込むスケッチ(ソースコード)を書いてみましょう。ここでのポイントはdigitalWriteではなく、analogWriteを使用するところです。

 通常のLEDをON/OFFするだけであれば、digitalWriteを使いますが、今回はふんわり点灯が目的ですから、analogWriteを使います。

int i = 0; // LEDの点灯パワー
bool inc = true; // 点灯なのか消灯なのかのフラグ
void setup()
{
  pinMode(3, OUTPUT); // D3ピンを出力に設定
}

void loop()
{
  analogWrite(3, i); // ここで指定したパワーでLEDを光らせる
  delay(10); // 少し待ちを入れたほうがゆっくり点滅になる。※好みで変更してください
  if(i <255 && inc) // Maxパワー未満かつ点灯フラグがTrueの時は電圧を上げる
  {
    i++;
  }
  else if(!inc) // 点灯フラグがFalseの時は電圧を下げる
  {
    i--;
  }  
  if(i == 255) // Maxパワーまで上がったら、点灯フラグをFalseにして消灯モードへ切り替える
  {
    inc = false;
  }
  else if (i == 0) // 電圧がミニマムまで行ったら点灯フラグをTrueにする
  {
    inc = true;
  }
}

 コメントの通りですが、このスケッチでは、ふんわり点灯とふんわり消灯を実現しています。ふんわり点灯だけだと、Max輝度になった後に急に明るさが0になってしまいます。

 なので、bool incでフラグを用意して、Max輝度になったのを検知してinc = falseとしてふんわり消灯するように切り替えています。同様に、Min輝度になったのを検知して今度はふんわり点灯するように切り替えています。

今回のまとめ

 今回は単純にON/OFFするだけのLチカからの卒業ということで、ふんわり点灯・消灯する方法についてご紹介しました。

 ポイントとして押さえておきたいのは以下の3点です。

今回のまとめ。押さえておきたいポイント
  • ふんわり点灯・消灯にはanalogWrite()を使う
  • analogWrite()が使えるのは、~が付いているピンだけ
  • ~が付いていると、疑似的に電圧を制御できるPWM制御が可能

 特に注意なのが、PWM制御可能なピンが決まっているところです。スケッチをコピペしたのにうまくいかないな…と思ったら、接続しているピンがPWM制御に対応しているか確認しましょう。

 今回の例ではArduino UNO R3で解説しましたが、他のArduinoシリーズでもやることは一緒です。~が付いているピンを探して、そこにLEDと抵抗をつなげてあげればOKです。もちろんスケッチもそのピンの番号に変更してあげるのもお忘れなく。

コメント

タイトルとURLをコピーしました