回路図
ラインデコーダ TC74HCT139 の出力でカソードコモンの 7 セグメント LED を駆動する方法「トランジスタをコレクタ接地で使う」が決まりましたので、全体の回路図を以下のように変更しました。
論理 IC で組んでいた 2 to 4 ラインデコーダを TC74HCT139 に置き換え、デジット制御回路を PNP 型トランジスタに変更しています。デジット制御回路から抵抗器がなくなっちゃいましたので、なんだかすっきりしましたねぇ。意外に良いのではないでしょうか (^_^;)
基本的な動作は「ラインデコーダによるデジット制御をArduinoで行なう(回路)」と同じです。
スケッチ
スケッチも基本的に「ラインデコーダによるデジット制御をArduinoで行なう(スケッチ)」と同じですが、入力 G が G に反転していますので、33 、35 行目の出力を逆にしています。
- void setup() {
- pinMode(2, OUTPUT);
- pinMode(3, OUTPUT);
- pinMode(4, OUTPUT);
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(7, OUTPUT);
- pinMode(8, OUTPUT);
- pinMode(9, OUTPUT);
- }
- void loop() {
- int sensorValue = analogRead(A0);
- int displayValue = map(sensorValue, 0, 1023, 0, 1023);
- for(int i=0; i<4; i++) {
- digitalWrite(7, i & B01);
- digitalWrite(8, i & B10);
- int digitValue = displayValue % 10;
- if((0 < i) && (0 == displayValue)) {
- digitalWrite(6, LOW);
- } else {
- digitalWrite(6, HIGH);
- }
- digitalWrite(2, digitValue & B0001);
- digitalWrite(3, digitValue & B0010);
- digitalWrite(4, digitValue & B0100);
- digitalWrite(5, digitValue & B1000);
- digitalWrite(9, LOW);
- delay(4);
- digitalWrite(9, HIGH);
- displayValue /= 10;
- }
- }
ブレッドボード
ブレッドボードです。
上段部分がラインデコーダとデジット制御用のトランジスタです。
ゼロサプレス制御もしていますので、4 桁目がブランクになっています。
さて、できあがったブレッドボードを見ていると、ひとつ気になることがでてきました。それは Arduino から出ているラインがたくさんあること。8 本もデジタルピンを使っているということです。
次は、この Arduino から出ているライン数を減らすように改造してみようと思います。