arduinoでTLC5940+74138を使ったLED制御
テスト用に作ってみました。TLC単体では16個迄のLEDを制御出来ますが、74138と組み合わせてあげることでx8の128個のLEDが制御出来ます。8倍です、TLCならば8個繋いて同じことも可能ですか、コストが…。
■基板イメージ
■回路図(抜き出し)
■サンプルコード
#include "Tlc5940.h" //74HC138 LED control pins const int PIN_LED_CTR_3 = 7; const int PIN_LED_CTR_2 = 6; const int PIN_LED_CTR_1 = 5; void setup() { /* Call Tlc.init() to setup the tlc. You can optionally pass an initial PWM value (0 - 4095) for all channels.*/ Tlc.init(); pinMode(PIN_LED_CTR_1, OUTPUT); pinMode(PIN_LED_CTR_2, OUTPUT); pinMode(PIN_LED_CTR_3, OUTPUT); } void lightLED(int idx) { digitalWrite(PIN_LED_CTR_3, (idx >> 2) & 0x1); digitalWrite(PIN_LED_CTR_2, (idx >> 1) & 0x1); digitalWrite(PIN_LED_CTR_1, idx & 0x1); } void loop() { int direction = 1; for (int channel = 0; channel < NUM_TLCS * 16; channel += direction) { Tlc.clear(); if (channel == 0) { direction = 1; } else { Tlc.set(channel - 1, 1000); } Tlc.set(channel, 4095); if (channel != NUM_TLCS * 16 - 1) { Tlc.set(channel + 1, 1000); } else { direction = -1; } Tlc.update(); for (int i=0; i <= 8; i++){ for (int j=0; j <= 7; j++){ lightLED(j); delay(1); } delay(1); } } }
メリットとして駆動用のFETが外付けなので比較的大電流を流せます。TLCのシンク電流制限を外そうとすると8chインバーターとN-FETが必要になりますけれども変更は簡単です。部品点数が多くなってしまうのが欠点でしょうか。
74138は入力ポート状態の変化で即出力ポートが変化するのが簡単でいいですね。
次回は、TLC+74595を制御してみたいとおもいます。
コメントはまだありません。