ArduinoとTLC5940で複数のRGB LEDを制御する
Arduinoで複数のRGBフルカラーLEDを制御してみようと思ったのですが、まずArduinoでPWM出力できるピンは6つしかなく、フルカラーLEDを1つ制御するには3つのPWM出力ピンを使う為、ArduinoだけだとフルカラーLED2つまでしか制御できないということになります。
そこで、もっと多量のPWM出力を制御できないか調べたところ、TLC5940というICから16ピン分のPWM出力を制御できるということが分かりました。さらにTLC5940どうしでデイジーチェーン接続していけば、32、48、、というようにPWM出力のピン数を増やしていけるみたいです。

さっそく購入したTLC5940
そしてLEDのカソード側とTLC5940のPWM出力を繋ぐので、RGB LEDはアノードコモンのものが必要になります。

角型フルカラーLED OSTA71A1D-A アノードコモン
このLEDの足をブレッドボードに4つの導線に分けて刺そうとすると、あと1穴分幅が足りなくてブレッドボードに刺さりません。むむむ、もどかしいです。
他に良さそうなアノードコモンのRGB LEDを見つけれなかったので、このLEDの足に銅線をはんだ付けしてブレッドボードに刺せるようにします。(もっと簡単な方法があったのでしょうかね?)

LEDの足をヒートクリップで挟んで熱からLEDを守る!あ、この写真は違う足を挟んでたw

足が長くなり、横たわるしかなくなったLED
お次は回路を組みます。
「Arduino 日本語リファレンス」のTLC5940のページにあった回路を参考に組みました。

2つのTLC5940をデイジーチェーン接続で繋いでいます。RGB LEDは10個
ランダムな色で順番に光るようにした動画です。
Arduinoのコードはこちら
// "tlc_config.h"の値を下記に変更
// #define NUM_TLCS 2
#include "Tlc5940.h"
#define MAX_BRIGHTNESS 4095
void setup() {
Tlc.init();
}
void loop() {
int myR = random(4)*(MAX_BRIGHTNESS/3);
int myG = random(4)*(MAX_BRIGHTNESS/3);
int myB = random(4)*(MAX_BRIGHTNESS/3);
//channelの 0 と 31 は未接続
for (TLC_CHANNEL_TYPE channel = 1; channel < (NUM_TLCS * 16)-2; channel += 3) {
Tlc.clear();
Tlc.set(channel + 0, myR);
Tlc.set(channel + 1, myG);
Tlc.set(channel + 2, myB);
Tlc.update();
delay(70);
}
}
今後はLEDの数をもっと増やしてテストを続けて行きたいと思います。
お金がかかります。ブルジョアの道楽です。





少々強引ですが、角型は斜めにすれば挿せます。
1C,2A,3D,4Bに足が来るようにしてみてください。
そんな手があったんですね!
情報どうもありがとうございます。