IchigoJamで遊ぶ・その5 「7セグディスプレイを使う」
なんだか久々になりましたが、今回は7セグメント(略して7セグ)LEDを使ってみたいと思います。
ええ、また光りモノですとも。
7セグというのは、こういう「日」の字型になっている、よく見かけるお馴染みのやつです。
光る棒の部分が7本あるので7セグメント。
小数点のドット部分を入れると8セグメントですけどね。
(ドットのことは忘れて)これを制御するには7本の信号が必要になるんですけど、ここで困った問題が。
Ichigo Jamには出力ポートが6つしかない!
さて、どうしましょう?
※ Ichigo Jam も日々進化しており、新しいバージョンでは出力ポートはもっと増えています。
7セグメントデコーダを使う
しかし、世の中には便利なものがあるものです。
汎用ロジックICの中に、その名も7セグメントデコーダという7セグ用の「74HC4511」というICがありますので、これを使いましょう。
これが「74HC4511」です。
足が16本あります。
(日立(現ルネサス)のデータシートから引用)
構造はこんな感じになっていて、左側のABCDの4ビットを使って0から9の信号を入力すると、それに対応した7セグ用の信号が右側のa~gから出力されます。
入力が4ビットなので、これを使えば4本の出力ポートで7セグ表示が可能になるというワケです。
他に、このICが動作するためには電源も必要なので、VCCには電源を接続します。
LT,BT,LEといったのは制御用?なので、今は特に気にしなくても良いかと。
ちなみに、10以上の信号を入力(4ビットなので15まで入力可能)した場合、全てのセグメントが消えて何も表示されません。
BASICで制御する
というわけで、74HC4511と7セグLEDをこんな感じで接続します。
LT,BT,LEは、VCCやGNDに固定します。
(本当は他にも抵抗やらコンデンサやらを追加した方がいいんだと思いますが省略しています)
あとは、表示したい数字をOUT命令に指定すれだけでOK!
OUT命令はパラメータが1つだと、2ビット化して各ポートに出力してくれるためです。
早速、「OUT 1」を実行してみると・・・
この通り。
「OUT 9」だとこうなります。
下の横棒が光らないデザインですね。
「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セグ使わなくても画面で表示すればいいじゃん」 とか言われそうですけど、それを無理矢理作るのが電子工作なのです。
・・・ほんとかよ(笑)
というわけで、ではまた。