TLC5940NT用16LED・PWM制御ボード(基板のみ)使ってみた!

投稿者:

当社で販売している「TLC5940NT用16LED・PWM制御ボード(基板のみ)」に「TLC5940NT 16チャネル・PWM定電流LEDドライバ」を搭載して16個のLEDをピカピカさせてみました。

まず「基板だけの商品」と「チップだけの商品」なので、他の部品も揃えてハンダ付けしました。
必要なもの
 TLC5940NT用16LED・PWM制御ボード(基板のみ)
 TLC5940NT 16チャネル・PWM定電流LEDドライバ
 LED(16個)今回は青色をチョイスしました
 抵抗(R1(10kΩ), R2(2kΩ), R3(100kΩ))
 積層セラミックコンデンサ(C1(0.1uF))
今回はジャンパワイヤ(オス~メス)でArduinoと接続する為にL字の10ピンヘッダを用意して「→IN」側にハンダ付けしました。
※ICのハンダ付けに自信がない方はICソケット28Pも用意すると良いでしょう


まず上記写真のようにハンダ付けして基板を完成させました。
#上の写真が表面、下が裏面です


次に上記図のようにArduinoと接続(配線)しました。

次にプログラムです。
まずライブラリを準備して下さい。
http://code.google.com/p/tlc5940arduino/downloads/list

最低限必要な部分は以下の通りです。

#include "Tlc5940.h"

void setup() {
  Tlc.init();
}

void loop() {
  Tlc.update();
  delay(1);
}

#これを実行しても何もおきません!
ちょっぴりプログラムの説明をします。
最初の「 #include "Tlc5940.h" 」でライブラリを合体しています。
そして「 void setup() { 」以下の「 Tlc.init(); 」でLEDライブラリの初期化します。
「 void loop() { 」の中では「 Tlc.update(); 」でLED情報の更新をしています。
#更新をしないとLEDの変化は実行されません

それではまず1つだけLEDを光らせてみましょう。
以下の1行を「 void loop() { 」の直下に挿入してみましょう。

  Tlc.set(0,4095);

それでは実行してみましょう。
0番のLEDが光りましたか?

ちょっと眩しくありませんか?次は明るさを変更してみましょう。
先ほど挿入した「 Tlc.set(0,4095); 」の2つ目のパラメータ「4095」これが明るさを示しています。
#明るさは0~4095の4096段階あります
4095の部分を500に変更して実行してみてください。

  Tlc.set(0,500);

眩しくなくなりましたか?

せっかく16個もLEDがあるのに0番しか光らないのはつまらないですよね。
次は0番以外の任意の場所を光らせてみましょう。
既にお気付きかも知れませんが「 Tlc.set(0,4095); 」の1つ目のパラメータ「0」これがLEDの場所を示しています。
#LEDは0~15の16個あります(基板にも0~15の記載があります)
0の部分を5に変更して実行してみてください。

  Tlc.set(5,4095);

5番のLEDが光りましたか?

これで好きなLEDを好きな明るさで光らせられるようになりましたね!

いくつかサンプルプログラムを掲載します。
とても短いプログラムなので、実行する前にどうなるか予想してから実行すると楽しいかも知れませんね。

サンプル1

#include "Tlc5940.h"

void setup() {
  Tlc.init();
}

void loop() {
  for (int i = 0;i < 16;i++) {
    Tlc.set(i,4095 / 16 * i);
  }
  Tlc.update();
  delay(1);
}

サンプル2

#include "Tlc5940.h"

void setup() {
  Tlc.init();
}

void loop() {
  for (int i = 0;i < 16;i++) {
    Tlc.clear();
    Tlc.set(i,4095);
    delay(50);
    Tlc.update();
  }
}

サンプル3

#include "Tlc5940.h"

void setup() {
  Tlc.init();
}

void loop() {
  for (int i = 0;i < 4096;i++) {
    Tlc.setAll(i);
    delay(1);
    Tlc.update();
  }
}

おやっ?新しい命令が使われていますね。
「 Tlc.setAll(i); 」
今の皆さんなら、これがどのような働きをする命令か解るでしょう!