RGBフルカラーLEDの色を段々に変化点灯させますパート3
〔パート1〕
〔パート2〕
〔Arduinoの動かせ方入門に戻る〕
パート1とパート2では、こちら(左)のLEDで
アナログ出力にて制御するRGBのLEDでした。
パート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-2020 Shigehiro Kimura All Rights Reserved.