Arduinoで電子制御④ お洒落に酔いしれるフルカラーLED

ここまで

さて、前回の記事まででLEDの基本的な使い方・考え方がわかってきました。

【はじめの】プログラミング初心者がArduinoマイコンを使ってLEDを点滅させるための手引き【一歩】 Arduinoで電子制御② もっとLチカ!複数のLEDを操る Arduinoで電子制御③ もっともっとLチカ!PWM制御でLEDの明るさを制御する

4回目の今回は、普通のLEDよりちょっとゴージャスな”フルカラーLED”というものを使います。

フルカラーLED?

外観

フルカラーLEDってどんなものかというと、名前の通り”どんな色でも発光させることができるLED”です。

外観はこんな感じ

足は2本です
足は2本です
足が4本生えています
足が4本生えています

上の画像が普通のLED、下がフルカラーLEDです。フルカラーLEDにも色んな形状のものがありますが、手元にあったのはこれでした。見た目は普通のLEDとそっくりですが、足が4本ありますね。普通のLEDは足が2本で、長い方がアノード、短い方がカソードでしたが、このLEDはどうなっているのでしょうか。

構造

フルカラーLEDの構造は実はとても単純で、赤・緑・青の三つのLEDをひとまとめにパッケージされてるだけです。フルカラーLED1個の中に、普通のLEDが3個入っているということですね。

4本の足のうち、

1本は3色共通のカソード

残り3本がそれぞれのアノード

となっています。このようにカソードが共通になっているものを”カソードコモン”といいます。中にはアノードが共通になっている”アノードコモン”タイプのものもありますので、使用の際にはよく確認が必要です。

赤・緑・青という色の組み合わせってどこかで聞いたことがありますよね。そう、光の三原色です。それぞれの光の強さを調節することによって、どんな色にでも光らせることができるというわけです。

使ってみる

配線

フルカラーLEDの構造が理解できたところで、実際に使ってみましょう。次のように配線します。

使用するLEDのピン配置をよく確認して配線してください。
使用するLEDのピン配置をよく確認して配線してください。

使用するLEDによってピン配置が異なる可能性があるので、よく確認して配線しましょう。適当にやるとLEDが焼ける可能性があります。本当にあっけなく焼けます。

各色PWMで明るさの制御をしたいので、~のついているピンに接続します。ここでは9~11を使用しました。

抵抗は1kΩを使用しました。本当は定格見て色ごとに抵抗を選択した方が、発色のバランスが良くなります。※くれぐれも、抵抗を入れずに接続するようなことをしてはいけません。あっけなく焼けます。

スケッチ1 まずは動作確認

それではスケッチです。まずは3色の発光を確認してみましょう。

#define R 11               //11番ピンには赤
#define G 9                //9番には緑
#define B 10               //10番には青

void setup(){
   pinMode(R,OUTPUT);
   pinMode(G,OUTPUT);
   pinMode(B,OUTPUT);
}

void loop(){
   digitalWrite(R,HIGH);   //赤が点灯
   delay(500);             //500ミリ秒待機
   digitalWrite(R,LOW);    //赤を消灯
   digitalWrite(G,HIGH);   //緑を点灯
   delay(500);             
   digitalWrite(G,LOW);    //緑を消灯
   digitalWrite(B,HIGH);   //青を点灯
   delay(500);
   digitalWrite(B,LOW);    //青を消灯
}

こういう回路になると、#defineが役に立ちますね。このようにピン番号と色を対応付けておくと、後で迷わなくて済みます。また、配線の変更にも対応しやすいというメリットもあります。

このスケッチを実行してみて、赤 → 緑 → 青 の順で点灯すればOKですね。

このように、3つのLEDを配線している場合と同じ感覚でフルカラーLEDを制御することができます。今は各色単独で点灯させましたので、少しスケッチを直して色を混ぜてみてください。とてもきれいな色になります。

スケッチ2 グラデーション

さあ、ここからが本番です。近頃冬場のイルミネーションというと、色とりどりに変化するLEDが大活躍してますよね。あれと同じことをしてみましょう。

#define R 11
#define G 9
#define B 10
int i;

void setup(){
  pinMode(R,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(B,OUTPUT);
}

void loop(){
  for(i=0;i<=255;i++){      //R → G へ変化
  analogWrite(R,255-i);
  analogWrite(G,i);
  delay(10);
  }
  for(i=0;i<=255;i++){      //G → R へ変化
  analogWrite(R,i);
  analogWrite(G,255-i);
  delay(10);
  }
}

まずは2色を使ってグラデーションさせてみます。少しややこしいですが、落ち着いてみていけばわかるはず。前回やったフェードイン、フェードアウトの応用です。滑らかに変化していく色はとても綺麗ですね。無事にできたら、色の組み合わせを変えてやってみましょう。R,G,Bの組み合わせを変えればOKですね。

スケッチ3 グラデーションpart2

2色のグラデーションができたら、今回のまとめとして、3色すべてを使ってグラデーションしてみます。といっても難しくはなく、グラデーションにさせる順番にだけ注意すればOKです。

#define R 11
#define G 9
#define B 10
int i;

void setup(){
  pinMode(R,OUTPUT);
  pinMode(G,OUTPUT);
  pinMode(B,OUTPUT);
}

void loop(){
  for(i=0;i<=255;i++){
  analogWrite(R,255-i);
  analogWrite(G,i);
  analogWrite(B,0);
  delay(10);
  }
  for(i=0;i<=255;i++){
  analogWrite(R,0);
  analogWrite(G,255-i);
  analogWrite(B,i);
  delay(10);
  }
  for(i=0;i<=255;i++){
  analogWrite(R,i);
  analogWrite(G,0);
  analogWrite(B,255-i);
  delay(10);
  }
}

上のスケッチでは、赤 → 緑 → 青 → 赤 → ・・・・と色を変化させています。色が途切れないように並べていけばいいわけです。もちろん、これと逆順で光らせることも可能です。

どうでしょうか?まるでクリスマスを彩るお洒落な照明のようですね。これで複数のフルカラーLEDを光らせたりすると壮観ですよ。

気になること

上のスケッチを見るとわかりますが、このグラデーション、常に同時に光っているのは2色のみという光り方です。本当は3色すべて点灯させた白い光をグラデーションに入れたいのですが、どうやら工夫が必要そうな感じです。筆者も一生懸命考えてみましたが、どうにも上手くいきません。何かいい方法をお持ちの方がいらっしゃいましたら教えていただけると嬉しいです。

まとめ

フルカラーLED内部には、赤・緑・青の3つのLEDが入っている

この3色の光らせ方を変えることで、どんな色でも作ることができる

3色でグラデーションさせると、とても綺麗

だんだん制御っぽくなってきました。次回もお楽しみに。

Arduino UNOはAmazonでも買えます。

最初に買う参考書ならこちらがおススメ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です