2021年1月9日土曜日

Arduino Nanoのピンが足りない!

年が明けてから昨日まで、ポストに郵便物を取りにいく以外はまったく外出せずに過ごしてきました。食料品も年末に購入したものでなんとかやりくり。仕事はテレワークなので、完全なステイホーム生活です。寒くて散歩もしていないため体重増加が気になります。流石に今日はスーパへ買い出しにでかけてきました。緊急事態宣言が出たあとですがスーパの人出は以前とあまり変わらない感じです。

正月休みにArduino Nanoを使ったシンプルな温度コントローラを作り始めました。以前、LCDに設定温度グラフと測定推移を表示できる オーブントースタの温度制御(続き2) を作りましたが、オーブントースタのサーモスタットが効いてしまい思うような温度制御ができなかったのでもっと単純なものにすることにしました。温度を設定し、その設定温度を閾値に単純にオン/オフするだけのものです。

Arduinoで7seg LEDのダイナミック表示をするのは初めてでしたが簡単にできました。ただ困ったことにピンが1ピン足りません。7seg LED 6桁(設定温度3桁、測定温度3桁)で13本も使うのが痛い。他に熱電対モジュール用、ロータリエンコーダ用、オン/オフのリレー出力用にもピンが必要。D0,D1 (TX,RX)ピンを使えば間に合いますが、通信用ピンを使うのは躊躇してしまいます。

7seg LEDのダイナミック点灯用にシフトレジスタを外付けすれば間に合いますが、シフトレジスタICが手元にありません。手元にあるPICでシフトレジスタを作ろうかと思いましたが、1ピン足りないだけで大げさです。


そこで、ダイオードとトランジスタで7seg LEDのすべての桁をオフにしたらオンになるNOR回路を作ってみました。通常のダイナミック点灯の桁信号は順番にひとつづつオンになっていき、どこかの桁が必ずオンになっていますが、すべてオフになる状態を設け、NORにより他の桁をオンにします。今回は最下位(右端)の桁をアサインしました。これにより5ピンで6個の7seg LEDをダイナミック点灯することができます。


このアイデアは、以前購入した水晶発振周波数カウンタテスタキットのオリジナルサイト、
Frequency counter with a PIC and minimum hardware に書かれていたもの(下図)です。周波数カウンタはカソードコモンの7seg LEDだったのでNANDを組んでいますが、今回はアノードコモンの7seg LEDなのでNORを作っています。


PICならピン数の多いものに乗り換えられますが、Arduino Nanoではそうもいかずこのような対策で回避しました。

0 件のコメント:

コメントを投稿