arduinoでTLC5940+74138を使ったLED制御

テスト用に作ってみました。TLC単体では16個迄のLEDを制御出来ますが、74138と組み合わせてあげることでx8の128個のLEDが制御出来ます。8倍です、TLCならば8個繋いて同じことも可能ですか、コストが…。

■基板イメージ

74138_2

■回路図(抜き出し)

74138

■サンプルコード

[cpp]

#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);
}
}
}

[/cpp]

メリットとして駆動用のFETが外付けなので比較的大電流を流せます。TLCのシンク電流制限を外そうとすると8chインバーターとN-FETが必要になりますけれども変更は簡単です。部品点数が多くなってしまうのが欠点でしょうか。

74138は入力ポート状態の変化で即出力ポートが変化するのが簡単でいいですね。

IMG_6152res

次回は、TLC+74595を制御してみたいとおもいます。

  1. コメントはまだありません。

  1. トラックバックはまだありません。


Warning: Undefined variable $user_ID in /home/r3087696/public_html/blog.eldhrimnir.com/wp-content/themes/monochrome/comments.php on line 172

Fatal error: Uncaught Error: Undefined constant "cs_print_smilies" in /home/r3087696/public_html/blog.eldhrimnir.com/wp-content/themes/monochrome/comments.php:185 Stack trace: #0 /home/r3087696/public_html/blog.eldhrimnir.com/wp-includes/comment-template.php(1617): require() #1 /home/r3087696/public_html/blog.eldhrimnir.com/wp-content/themes/monochrome/single.php(57): comments_template() #2 /home/r3087696/public_html/blog.eldhrimnir.com/wp-includes/template-loader.php(106): include('/home/r3087696/...') #3 /home/r3087696/public_html/blog.eldhrimnir.com/wp-blog-header.php(19): require_once('/home/r3087696/...') #4 /home/r3087696/public_html/blog.eldhrimnir.com/index.php(17): require('/home/r3087696/...') #5 {main} thrown in /home/r3087696/public_html/blog.eldhrimnir.com/wp-content/themes/monochrome/comments.php on line 185