1. 7セグメントディスプレイ
今回はArduinoを用いて7セグメントディスプレイの表示を行う。Arduinoから直接ディスプレイに接続する場合、7つのデジタルピンを使用するため、今回は7セグメントデコーダーを利用して7セグメントディスプレイを表示させる。
2. 7セグメントデコーダー
Tinkercad上のコンポーネント-すべてから7セグメントデコーダーCD4511*1を利用することができる。CD4511の端子割り当てを下に示す。
基本的には0-9までの4bitバイナリの各ビットをDCBAに入力すると、7セグメント表示するための7bitバイナリを出力する。7セグメントディスプレイの表示位置と7bit出力(abcdefg)の割り当てを下に示す。
また入力(10進)と7bit出力の真理表を下に示す。
入力 | a | b | c | d | e | f | g |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
6 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
単に表示するだけであればLT(Lamp Test), BL(Blanking)はHIGH(5V), LE(Latch Enable)はGNDにしておく。
3. 7セグメントディスプレイの接続
7セグメントディスプレイの接続タイプとしてカソードコモンとアノードコモンがある。アノードコモンの回路図は下のようになっており、コモン端子を電源(ex:5V)に接続し、各端子はGND(LOW)にすることで電流が流れて各セグメントのLEDが点灯する。
一方でカソードコモンは、コモン端子がGNDになっており、各端子はHIGHにすることで電流が流れてLEDが点灯する。
Tinkercad上は7セグメントディスプレイをクリックして"陽極"(アノードコモン)または"陰極"(カソードコモン)を選択する。(実物はどちらかのタイプになる)今回はカソードコモン接続とする。
4. Arduino、7セグデコーダー、ディスプレイの接続
7セグメントドライバCD4511と7セグメントディスプレイはabcdefg端子同士を接続し、ディスプレイのコモン端子はGNDに接続する。CD4511とArduinoは、ABCD端子はArduinoの2,3,4,5ピンに接続し、VDD, LT, BE端子は5Vに、またLEはGNDに接続する。今回の処理は0-9までを順次7セグメントディスプレイに表示する。 スケッチは以下に示す。
boolean a1,a2,a3,a4; int cnt; void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); cnt=0; } void loop() { a1=bitRead(cnt,0); a2=bitRead(cnt,1); a3=bitRead(cnt,2); a4=bitRead(cnt,3); digitalWrite(2, a1); digitalWrite(3, a2); digitalWrite(4, a3); digitalWrite(5, a4); cnt++; delay(500); if(cnt>9){ cnt=0; } }
表示させたい10進数の数値をbitRead(num,n)
を用いてビットに変換する。numは10進数、nは最下位からnビット目を読み取る。4ビットに変換したい場合はnを0-3まで逐次実行すればよい。今回はCD4511に入力するピンに対してbitRead(cnt,n);
(n:0-3)で読み取った2値を用いてdigitalWrite()
でLOWまたはHIGHを出力する。cntは10以上になったら0にリセットするようにしている。
Tinkercad上での実行例を下に示す。