IchigoJamで遊ぶ・その5 「7セグディスプレイを使う」

(投稿日:2016-04-06)

なんだか久々になりましたが、今回は7セグメント(略して7セグ)LEDを使ってみたいと思います。
ええ、また光りモノですとも。

7seg
7セグというのは、こういう「日」の字型になっている、よく見かけるお馴染みのやつです。
光る棒の部分が7本あるので7セグメント。
小数点のドット部分を入れると8セグメントですけどね。

(ドットのことは忘れて)これを制御するには7本の信号が必要になるんですけど、ここで困った問題が。

Ichigo Jamには出力ポートが6つしかない!

さて、どうしましょう?

※ Ichigo Jam も日々進化しており、新しいバージョンでは出力ポートはもっと増えています。

7セグメントデコーダを使う

しかし、世の中には便利なものがあるものです。
汎用ロジックICの中に、その名も7セグメントデコーダという7セグ用の「74HC4511」というICがありますので、これを使いましょう。

74HC4511
これが「74HC4511」です。
足が16本あります。

74hc4511ds
(日立(現ルネサス)のデータシートから引用)

構造はこんな感じになっていて、左側のABCDの4ビットを使って0から9の信号を入力すると、それに対応した7セグ用の信号が右側のa~gから出力されます。
入力が4ビットなので、これを使えば4本の出力ポートで7セグ表示が可能になるというワケです。

他に、このICが動作するためには電源も必要なので、VCCには電源を接続します。
LT,BT,LEといったのは制御用?なので、今は特に気にしなくても良いかと。

ちなみに、10以上の信号を入力(4ビットなので15まで入力可能)した場合、全てのセグメントが消えて何も表示されません。

BASICで制御する

kairo

というわけで、74HC4511と7セグLEDをこんな感じで接続します。
LT,BT,LEは、VCCやGNDに固定します。
(本当は他にも抵抗やらコンデンサやらを追加した方がいいんだと思いますが省略しています)

あとは、表示したい数字をOUT命令に指定すれだけでOK!
OUT命令はパラメータが1つだと、2ビット化して各ポートに出力してくれるためです。

早速、「OUT 1」を実行してみると・・・
7seg_1
この通り。

7seg_2
「OUT 9」だとこうなります。
下の横棒が光らないデザインですね。

7seg_a
「OUT 10」とすると何も表示されません。

プログラムでグルグル回してみます。

10 FOR I=0 TO 9
20 OUT I
30 WAIT 30
40 NEXT
50 GOTO 10

電子ルーレット

グルグルカウントするだけでは面白くないので、電子ルーレットみたいなのを作ってみました。

10 REM INIT
20 M=0
30 W=0
50 REM RANDOM
60 A=RND(10)
70 IF R=A THEN GOTO 60
80 R=A
90 OUT R
100 IF M=0 AND BTN(0)=1 THEN M=1
110 IF M=1 THEN W=W+1
120 IF W>20 THEN M=2
130 WAIT W
140 IF M<>2 THEN GOTO 60
150 REM RESULT
160 FOR I=1 TO 5
170 OUT R
180 WAIT 30
190 OUT 10
200 WAIT 30
210 NEXT
220 GOTO 10

本体のスイッチを押すとルーレットが遅くなっていき、最後に出目の数値か点滅します。

数値はカウントアップではなくランダムです。

「ルーレットなら、別に7セグ使わなくても画面で表示すればいいじゃん」 とか言われそうですけど、それを無理矢理作るのが電子工作なのです。
・・・ほんとかよ(笑)

というわけで、ではまた。

投稿者: