RGBフルカラーLEDの色を段々に変化点灯させますパート3

〔パート1〕 〔パート2〕   〔Arduinoの動かせ方入門に戻る〕



アナログ入力RGBLED  パート1とパート2では、こちら(左)のLEDで
 アナログ出力にて制御するRGBのLEDでした。

デジタル入力RGBLED  パート3では、こちら(左)のLEDを使います
 デジタル出力にて制御するRGBのLEDです。
 また、こちらは8mmのLEDで同じ様に扱えます。

アナログタイプは制御ピン(PWM)が3本必要ですが、このLED(PL9823)はデジタルピン1本のみです、
しかも複数個のLEDをぶら下げても1本です、さらにお値段が安い。

このLED(PL9823)のデータシートは秋月電子のページを参考に見て下さい。
尚、このLEDは最大の明るさで約52mA程流れる様ですこちらを参照下さい。

《ライブラリについて》

スイッチサイエンスで販売している、"AdafruitのNeoPixelスルーホールLED"用のライブラリが使える
のでそれを利用します。
こちらのサイトの右側[Download ZIP]ボタンをクリックしダウンロードします。

ダウンロードファイルを解凍し、ArduinoIDE(ここではVr1.0.5-r2)がインストールされているフォルダー、
インストール先を変更していないなら [C:\Program Files\arduino\libraries]です。
この場所に上記解凍ファイルを[Adafruit_NeoPixel]ディレクトリ丸ごと移動します。

注意) 解凍ファイルは"Adafruit_NeoPixel-master"となっています、"-master"をファイル名から
    削除します。

Adafruit_NeoPixel.cpp

ライブラリの中から主な関数のみ説明して置きます。

ライブラリを利用する場合は、メニューバーの「スケッチ」→「ライブラリを使用...」→「Adafruit_NeoPixel」を
クリック操作すれば、"#include <Adafruit_NeoPixel.h>"がスケッチに追加されます。
まぁ、手動でキー入力しても良いんですけどね。

Adafruit_NeoPixel
 関数ライブラリを使用する為に必要な宣言(初期化)を行います。
 Adafruit_NeoPixel RGBLED(n,p,t) ;
  n :Arduinoにぶら下がっているRGB LEDの個数を指定
  p :RGB LEDに出力するピンの番号を指定
  t  :RGB LEDのタイプを指定(出力するRGBの並び+駆動周波数)
     NEO_RGB   = データはRGBの並びで出力する。(今回のLEDはこれを指定)
     NEO_GRB   = データはGRBの並びで出力する。
     NEO_KHZ800 = 駆動周波数は800KHzで行う。(今回のLEDはこれを指定)
     NEO_KHZ400 = 駆動周波数は400KHzで行う。
 RGBLEDの名前は任意に変更可能です。
 例)LEDを3個使用し、2番ピンから出力での設定例です
   Adafruit_NeoPixel RGBLED = Adafruit_NeoPixel(3,2, NEO_RGB + NEO_KHZ800);
 Adafruit_NeoPixel RGBLED(x,x,x+x) ; 以下はこの宣言例で記述します。

RGBLED.begin( )
 初期化を行う処理です。
 ここで指定の出力ピンにpinMode(pin, OUTPUT);を行ってます。

RGBLED.setBrightness(b)
 LEDの明るさを指定します。
  b :0-255の範囲です、0指定でも今回のLEDは8mA程流れます。

RGBLED.setPixelColor(n,r,g,b)
 LEDの色をRGBにて指定します。
 この関数はデータの配列に色データをセットするだけです。
  n :出力するLEDの配列(並び)位置を指定します。
  r  :Rの色を8ビット(0-255)で指定します。
  g :Gの色を8ビット(0-255)で指定します。
  b :Bの色を8ビット(0-255)で指定します。
 LEDの配列位置は、
  位置→         0     1     2
  配線→ [Arduino]---[LED1(赤)]---[LED2(緑)]---[LED3(青)]
 ならば、
  RGBLED.setPixelColor(0, 255,0,0) ; // LED1
  RGBLED.setPixelColor(1, 0,255,0) ; // LED2
  RGBLED.setPixelColor(2, 0,0,255) ; // LED3
RGBLED.show( )
 この関数で実際に接続している全てのLEDに出力します。

※その他の関数は"Adafruit_NeoPixel.cpp"を見て下さい。

《サンプル回路とスケッチ》

配線図  左はLED1個の配線例です。
 何個まで配線できるかは不明です。m(_ _)m
 (5VレギュレータはMAX1A出力の様だが?)

 下は2個配線での実験風景です。
 実験風景

 抵抗とコンデンサーの定数はデータシートの
 とおりです。

(スケッチ)

LEDを1個でのスケッチ例です。
"Adafruit_NeoPixel"ライブラリを使えば何個LEDを配線しようと簡単に制御できますね。
---------------------------------------------------------------------
#include <Adafruit_NeoPixel.h>

// RGBLEDに出力するピン番号
#define RGBLED_OUTPIN    2
// Arduinoにぶら下がっているRGBLEDの個数
#define NUMRGBLED        1

// RGBLEDのライブラリを生成する(色指定はRGBの並びで行う、LEDの速度は800KHzとする)
Adafruit_NeoPixel RGBLED = Adafruit_NeoPixel(NUMRGBLED, RGBLED_OUTPIN, NEO_RGB + NEO_KHZ800);

void setup()
{
     RGBLED.begin() ;                   // RGBLEDのライブラリを初期化する
     RGBLED.setBrightness(50) ;         // 明るさの指定(0-255)を行う
     RGBLED.setPixelColor(0, 0,150,0) ; // 適度に明るい緑の色。(R=0,G=150,B=0)
     RGBLED.show() ;                    // LEDにデータを送り出す
}
void loop()
{

}
---------------------------------------------------------------------

《その他》

表面実装タイプの”こちら(WS2812B)”は色の出力する順番が異なるので、
初期化では[NEO_GRB]と指定します。
それから色の指定は、RGBLED.setPixelColor(n,g,r,b)となりますよ。
尚、これはモジュールで抵抗とコンデンサーが付いているので扱いやすいかもね。




【きむ茶工房ガレージハウス】
Copyright (C) 2006-2014 Shigehiro Kimura All Rights Reserved.