Arduino

3色LEDを光らせる

今まで様々な方法でLEDを点灯させてきましたが、使っていたLEDは赤色LEDのみでした。しかし、世の中にはクリスマスツリーに飾るLEDのようなカラフルに光るものもあります。例えば、赤色LED、青色LED、緑色LEDなど多くのLEDが存在します。

今回は1つのLEDでカラフルな点灯できる3色LEDを使っていこうと思います。

3色LEDとは

1つのLEDに赤、青、緑の3色を封入したLEDのことを3色LEDといいます。3色LEDは光の3原色を組み合わせて様々な色を発光します。例えば、赤と青のLEDを発光すると紫色になり、3色全てを発光すると白色になります。

3色LEDは単色のLEDとは違い、端子が4本になっているものが一般的です。今回はpl9823という3色LEDを使います。

この3色LEDの端子は左からDIN、VDD、GND、DOと名称がついています。DINにはArduinoから信号を送り、VDDは電源、GNDは0Vへと接続します。DOは3色LEDを数珠つなぎで光らせる場合に使います。例えば、二つの3色LEDを接続する場合は一つ目のLEDのDOと二つ目のLEDのD1をつなぐことになります。次のつなぎ先がない場合は、どこにも接続しない状態にします。つまり、3色LEDが一つの場合はDIN、VDD、GNDしか使いません。

3色LEDを点灯させる回路

緑→赤→青→白の発光を繰り返す単純な回路を作成しました。プログラムにはAdafruit社が作成したLED点灯用のライブラリを使っていますので、別途用意が必要となります。

作成した回路

作成した回路は下図をご覧ください。

今回の回路で使用した装置及び部品は下表をご覧ください。

Arduinoマイコン搭載の小型コンピュータ
ブレッドボード抵抗・ジャンパー線などを使って回路を作る基板
3色LED赤、青、緑の3色のLEDを封入したLED
ジャンパー線電気を中継する線

実際の配線図は以下を参考にしてください。

プログラムコード

プログラムコードは以下を参考にしてください。

#include <Adafruit_NeoPixel.h>

/*定数*/
const int PIN = 6;//LEDを制御するピンを5番とする
const int NUMPIXELS = 1;//LED数
const int DELAYVAL = 500;//delayの値

/*インスタンス・変数宣言*/
Adafruit_NeoPixel pixels(NUMPIXELS,PIN,NEO_GRB+NEO_KHZ800);//
int green[] = {128,0,0};//表示するRGBカラー
int red[] = {0,128,0};//表示するRGBカラー
int blue[] = {0,0,128};//表示するRGBカラー
int white[] = {128,128,128};//表示するRGBカラー

void setup() {
  // put your setup code here, to run once:
pixels.begin();//LEDの初期処理
}

void loop() {
  // put your main code here, to run repeatedly:
  pixels.clear();//シリアル通信のクリア

  for(int i = 0; i < NUMPIXELS;i++)
  {
    pixels.setPixelColor(i,pixels.Color(green[0],green[1],green[2]));//LEDの表示内容を設定
    pixels.show();//LED点灯
    delay(DELAYVAL);    

    pixels.setPixelColor(i,pixels.Color(red[0],red[1],red[2]));//LEDの表示内容を設定
    pixels.show();//LED点灯
    delay(DELAYVAL); 

    pixels.setPixelColor(i,pixels.Color(blue[0],blue[1],blue[2]));//LEDの表示内容を設定
    pixels.show();//LED点灯
    delay(DELAYVAL); 

    pixels.setPixelColor(i,pixels.Color(white[0],white[1],white[2]));//LEDの表示内容を設定
    pixels.show();//LED点灯
    delay(DELAYVAL); 
  }

}

ライブラリの用意

Adafruit社のAdafruit_NeoPixelライブラリを使って3色LEDを発光させています。このライブラリは以下のGitHubにアクセスしてダウンロードしてください。

ZIPファイルをダウンロードしたら、Arduino IDEの「スケッチ」→「ライブラリをインクルード」→「ZIPファイルのライブラリをインクルード」でインクルードしてください。

Adafruit_NeoPixelライブラリの使い方

最初にインクルードをしています。

#include <Adafruit_NeoPixel.h>

そのあとにインスタンスを生成しています。引数はおまじないだと思ってください。

Adafruit_NeoPixel pixels(NUMPIXELS,PIN,NEO_GRB+NEO_KHZ800);

セットアップ部分ではLEDの初期処理をしています。

pixels.begin();//LEDの初期処理

Loopの初めにシリアル通信のクリアをしてます。このクリアでLEDが消灯するわけではありません。

pixels.clear();//シリアル通信のクリア

setPixelColorでは、i番目の3色LEDを点灯させています。Colorでは左から緑、赤、青の色を指定しています。その直後にLEDを点灯させています。

pixels.setPixelColor(i,pixels.Color(green[0],green[1],green[2]));//LEDの表示内容を設定
pixels.show();//LED点灯

実行結果

実行結果は以下の動画をご覧ください。

まとめ

今回は3色LEDを使った回路を作成しました。3色LEDは赤、青、緑のLEDを一つのLEDに封入し、光の3原則を使って様々な色を発光させています。

今後も何色もの光を点灯させたい場合にはこの3色LEDが活躍するので、どういった原理か、どうやって使うかをしっかりと身につけておきたいものです。

参考書籍

Arduino電子工作