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の数をもっと増やしてテストを続けて行きたいと思います。
お金がかかります。ブルジョアの道楽です。

Comments

  • 少々強引ですが、角型は斜めにすれば挿せます。
    1C,2A,3D,4Bに足が来るようにしてみてください。

    brown_wizrobe|2013 年 8 月 18 日 10:50 PM
  • そんな手があったんですね!
    情報どうもありがとうございます。

    usami|2013 年 8 月 19 日 10:10 AM

Post a comment

※承認されるまではコメントは表示されません。

Trackbacks

URL: http://b.i-tach.com/wp-trackback.php?p=710