今まで様々な方法で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が活躍するので、どういった原理か、どうやって使うかをしっかりと身につけておきたいものです。