フルカラーLEDをArduinoで制御してみる
本日二回目の更新はフルカラーLEDの紹介と制御方法解説です。
先ほどデジタルカラーセンサの紹介記事を載せましたが、後日フルカラーLEDと組み合わせようと思い早速、某密林さんでポチったわけですね。
密林さんでは50個単位でしか売っていなかったのでかなり持て余していますが、多い分にはいいでしょう、、、
このフルカラーLEDはひとつのユニットにRGBのLEDがまとまっているものです(カソード共通)基本的にはマイコンのPWM制御により色を変えていけます。
次項から説明しますが、今回はボリュームで各色の出力PWMを調整して色を可変していきたいと思いますよ。
フルカラーLEDの説明
フルカラーLEDとは文字の通り色の三原色である赤・緑・青を再現することのできるLEDです。
基本的には各色でアノードが分かれており、カソードは共通になります。
気を付けたいのが各色で順方向電圧(Vf)が異なります。
なので、各色同じ電流制限抵抗を付けてしまうと照度が均一になりません。
参考に秋月さんのサイトから拝借した各色のVfを載せますね。
- 赤色:1.8V(最小) 2.1V(定格) 2.6V(最大)
- 青色:2.9V(’最小) 3.1V(定格) 3.6V(最大)
- 緑色:2.9V(’最小) 3.1V(定格) 3.6V(最大)
という事で今回は定格電圧を参考にして、各色だいたい20mA程度流します(高輝度LEDなので)
抵抗は以下のように設定しています。
- 赤色:150Ω
- 青色:100Ω
- 緑色:100Ω
テストコード
動作確認としては可変抵抗×3個使い各色のゲインを調整できるようにしたいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
void setup() { Serial.begin(9600); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); } void loop() { uint16_t R, G, B;//アナログ読み取り変数 R=analogRead(0); B=analogRead(1); G=analogRead(2); R=map(R,0,1023,0,255); B=map(B,0,1023,0,255); G=map(G,0,1023,0,255); Serial.println(R); Serial.println(B); Serial.println(G); analogWrite(9,R); analogWrite(10,B); analogWrite(11,G); } |
機能としてはアナログ10bit値をPWMの8bit値にmap関数で変換しているだけです。
各ボリュームを回すと下の画像のように色が変わるはず!
※LED筐体がクリアタイプのフルカラーLEDでは単体では光の拡散がうまくいかないので白紙をかませるか、白の光拡散キャップを被せるとうまく光が交わります。本記事では白色の緩衝材が転がっていたので、それに穴を開けて被せています。
おわりに
今回はフルカラーLEDの紹介と使い方例という事で記事にしてみましたが、使って見て感じたのが各色Vfが違うので、どうしても順方向電流(If)をそろえることができないという事ですね。
なので、実際に使う時には固定抵抗ではなく、ボリュームで直接電流値を可変させるか、今回みたいにPWMでゲインを調整するかの2択になるのかなと思ったりしました。
フルカラーLEDの使い方も覚えたのでデジタルカラーセンサと組み合わせて遊んでみたいと思います。
では!
コメント