つれづれなる備忘録

日々の発見をあるがままに綴る

TinkercadによるArduinoシミュレーション34 ~ 7セグディスプレイで2桁表示

1. 7セグディスプレイ2台を利用した2桁表示

 前回の4ビットバイナリカウンタと7セグディスプレイデコーダーと組み合わせたカウント表示を応用して7セグディスプレイ2台を使って2桁のカウントを表示する方法を紹介する。

atatat.hatenablog.com

2. 7セグディスプレイ2台の使用

 前回の4ビットバイナリカウンタと7セグディスプレイデコーダー、7セグメントディスプレイの組み合わせを2台分用意すれば7セグディスプレイ2台で2桁のカウントを表示することができるが、リセット制御の入力を再利用することで配線数を減らすことができる。前回のリセット制御では1桁目が10をカウントしたときに、4ビットバイナリカウンタ74HC93のリセット端子にLOWの状態からHIGHを入力して再びLOWにすることでカウント表示をリセットして0から開始するようにしたが、これをクロック信号として2台目の4ビットバイナリカウンタのクロック入力に接続する。リセットは桁があがるごとに発生するので、2桁目のカウントとして利用することができる。なお2桁目が10になった場合に0からカウントを開始するようにするためには、2桁目の表示のリセットのためArduinoの出力ピンと接続して1桁目と同様の制御をする。  

3. 全体の接続とスケッチ

 前回のカウンタのリセット制御に利用した接続図から2桁目の表示用に4ビットバイナリカウンタ、7セグディスプレイデコーダー、7セグメントディスプレイをTinkercad上で追加し、2桁目のリセット制御はArduinoの4ピンと接続する。また1桁目のバイナリカウンタのリセット制御は2桁目のバイナリカウンタのクロック入力に接続する。7セグメントディスプレイの接続は、1接続ごとに抵抗をはさむと冗長なので、グラウンド側に1つだけ抵抗を設ける形にして過電流の警告がでないようにしている。(注:実際の配線では、Arduinoの供給電流の上限、LEDに流れる電流など故障しないように配慮が必要。シミュレーション上は問題なく実行できてしまう

 

7セグディスプレイ2桁表示
7セグディスプレイ2桁表示

スケッチは前回のものに2桁目のリセット制御に関する処理を加えて以下のようにした。

int dt=200; 
int cnt=0; // 1桁目カウント
int cnt2=0; // 2桁目カウント
void setup()
{
  pinMode(3, OUTPUT);//クロック入力
  pinMode(2, OUTPUT);//リセット制御(1桁目)
  pinMode(4, OUTPUT);//リセット制御(2桁目)
  digitalWrite(3,LOW);
  digitalWrite(2,LOW);
  digitalWrite(4,LOW);

}

void loop()
{
  if(cnt>9){// 1桁目カウントが9を越えたらリセット処理
    digitalWrite(2,HIGH);//カウンタリセット
    digitalWrite(2,LOW);//カウント
    cnt=0;
    cnt2++;
  }
  
   if(cnt2>9){// 2桁目カウントが9を越えたらリセット処理
    digitalWrite(4,HIGH);//カウンタリセット
    digitalWrite(4,LOW);//カウント
    cnt2=0;
  }
 digitalWrite(3,HIGH);
 delay(dt);
 digitalWrite(3,LOW);
 delay(dt);
 cnt++;
  
}

Tinkercadでシミュレーションを実行すると1桁目の桁があがると2桁目の7セグディスプレイに表示される数値が上がっていき、2桁目の表示が9を超えると再び0からカウントが始まる。原理的には、リセット制御を次桁のカウンタのクロック入力に接続し、リセット制御分だけArduinoの出力ピンを用いることで3桁、4桁と増やすことができるが実際にはArduinoから供給できる電流の上限があるので注意が必要だ。

4. まとめ

 カウンタのリセット制御のさらなる応用として7セグディスプレイ2台を使って2桁のカウントを表示する方法を今回は紹介した。