アフィリエイト広告
アフィリエイト広告

ラインデコーダTC74HCT139でデジット制御する

回路図

ラインデコーダ TC74HCT139 の出力でカソードコモンの 7 セグメント LED を駆動する方法「トランジスタをコレクタ接地で使う」が決まりましたので、全体の回路図を以下のように変更しました。

論理 IC で組んでいた 2 to 4 ラインデコーダを TC74HCT139 に置き換え、デジット制御回路を PNP 型トランジスタに変更しています。デジット制御回路から抵抗器がなくなっちゃいましたので、なんだかすっきりしましたねぇ。意外に良いのではないでしょうか (^_^;)

基本的な動作は「ラインデコーダによるデジット制御をArduinoで行なう(回路)」と同じです。

スケッチ

スケッチも基本的に「ラインデコーダによるデジット制御をArduinoで行なう(スケッチ)」と同じですが、入力 G が G に反転していますので、33 、35 行目の出力を逆にしています。

  1. void setup() {
  2.   pinMode(2, OUTPUT);
  3.   pinMode(3, OUTPUT);
  4.   pinMode(4, OUTPUT);
  5.   pinMode(5, OUTPUT);
  6.   pinMode(6, OUTPUT);
  7.   pinMode(7, OUTPUT);
  8.   pinMode(8, OUTPUT);
  9.   pinMode(9, OUTPUT);
  10. }
  11. void loop() {
  12.   int sensorValue = analogRead(A0);
  13.   int displayValue = map(sensorValue, 0, 1023, 0, 1023);
  14.   for(int i=0; i<4; i++) {
  15.     digitalWrite(7, i & B01);
  16.     digitalWrite(8, i & B10);
  17.     int digitValue = displayValue % 10;
  18.     if((0 < i) && (0 == displayValue)) {
  19.       digitalWrite(6, LOW);
  20.     } else {
  21.       digitalWrite(6, HIGH);
  22.     }
  23.     digitalWrite(2, digitValue & B0001);
  24.     digitalWrite(3, digitValue & B0010);
  25.     digitalWrite(4, digitValue & B0100);
  26.     digitalWrite(5, digitValue & B1000);
  27.     digitalWrite(9, LOW);
  28.     delay(4);
  29.     digitalWrite(9, HIGH);
  30.     displayValue /= 10;
  31.   }
  32. }

ブレッドボード

ブレッドボードです。

上段部分がラインデコーダとデジット制御用のトランジスタです。
ゼロサプレス制御もしていますので、4 桁目がブランクになっています。

さて、できあがったブレッドボードを見ていると、ひとつ気になることがでてきました。それは Arduino から出ているラインがたくさんあること。8 本もデジタルピンを使っているということです。

次は、この Arduino から出ているライン数を減らすように改造してみようと思います。

タイトルとURLをコピーしました