IchigoJam(6) <4桁時計ダイナミック表示>
IchigoJamで4桁時計を作った。(IchigoJam(5) (2015/9/24))
スタティック表示だから、大した苦労もなく作れた。使った表示器はHDSP0760(Latch+Decoder+Driver+LED)という表示器で一般的ではない。
普通の7セグLEDを使って、ダイナミック表示でもできるのではと思い立ったので早速作ってみた。
4511(BCD-to-Seven Segment Latch/Decoder/Driver)と74HC139(2-4Decoder)の組み合わせはわかりやすい。
IchigoJamのOUT1~OUT7(LED)でLEDのa~gを駆動すると 4511(7SegDecoder)は 省略できそうだ。
桁ドライブには74HC4017(JohnsonCounter)を使う。
74HC4017(JohnsonCounter)はカウントパルスが入力されると、順番にQ0~Qnに"H"が出力される。上の回路では、Q4をRESETに繋いであるので、Q0→Q1→Q2→Q3→Q0→Q1・・・のように循環して出力される。 "H"が出力された桁に、OUT1~OUT7に数字のパターンを出力すると4桁表示できる。
74HC4017のデータシートによると出力電流は25mAなので、コモン側のドライバを省略してみる。CD4017は出力電流が取れないのでドライブ用のトランジスタが必要だ。(点線の中の図)
a~gまでの全てのセグメントが点灯した場合は、それぞれのセグメントに25mA/7≒3.6mA流れることになる。最近のLEDは3.6mAも流すと室内では十分な明るさで光る。 しかし、それはスタティック表示の場合だ。
4桁のダイナミック表示なので、点灯している時間は全体の1/4だから、平均電流は3.6mA/4=0.9mAだ。さすがに0.9mAは少ないなあ。でも、トランジスタのドラバを入れると部品が増えるしなあ...まあやってみよう。
IchigoJamの出力はOUT1~OUT7で、これをLEDのa~gに使うと、74HC4017のカウントパルスに使える出力がないので、D1,D2,R8でORを構成してカウントパルスを作る。
OUT2,OUT3は7セグLEDの"b","c"に繋がっている。この7セグLEDはアノードコモンだからOUT1~OUT7(LED)に出力するパターンは
: | g | f | e | d | c | b | a | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | : | 1 | 0 | 0 | 0 | 0 | 0 | 0 | : | #40 |
1 | : | 1 | 1 | 1 | 1 | 0 | 0 | 1 | : | #79 |
2 | : | 0 | 1 | 0 | 0 | 1 | 0 | 0 | : | #24 |
3 | : | 0 | 1 | 1 | 0 | 0 | 0 | 1 | : | #30 |
4 | : | 0 | 0 | 1 | 1 | 0 | 0 | 1 | : | #19 |
5 | : | 0 | 0 | 1 | 0 | 0 | 1 | 0 | : | #12 |
6 | : | 0 | 0 | 0 | 0 | 0 | 1 | 0 | : | #02 |
7 | : | 1 | 1 | 1 | 1 | 0 | 0 | 0 | : | #78 |
8 | : | 0 | 0 | 0 | 0 | 0 | 0 | 0 | : | #00 |
9 | : | 0 | 0 | 1 | 0 | 0 | 0 | 0 | : | #10 |
"b","c"をよく見ると、"0"~"9"のどのパターンを表示したときでも、"b","c"どちらかが"0"である。そして、"b"はD1、"c"はD2を経由してHC4017の13ピンに繋がっているので、表示中は、HC4017の13ピン CKE は"L"になる。
隣の桁を表示する前に、一旦、OUT1~OUT7を全て"H"(OUT #FF )にすると、HC4017の CKE は"H"になる。
そして、次の桁の数字を表示したときに再び"L"に戻るので、カウンターが進みLEDの次の桁に"H"が供給され、同時にOUT1~OUT7(a~g)に数字のパターンが出力されているので、無事次の桁に数字が表示される。
つまり、次の桁の数字を表示する前に、OUT #FF を実行すればよい。(170行)
プログラムは↓こんな感じ。
1 'IchigoJam 4Digit clock / dynamic lighting |
時計をダイナミック表示するプログラムは、メインルーチンで、
- 時間の計測
- 時刻のカウントアップ(分は60進数、時は24/12進数)
- ボタンの取得
- 時刻あわせ処理
を行い。表示には割り込みを使うと、メインルーチンの処理が重くなってもチラつかない。
IchigoJam BASICは割り込みが使えないので、全てメインルーチンで処理しなくてはならない。時刻のカウントアップは処理が増えるのでチラつくが、60秒に1回しか実行しないので気にならないだろう。また、ボタンを押すと、時刻あわせ処理が実行されるのでループ1回の処理時間が長くなりチラつく。 常時ボタンを押しているわけではないので良しとしよう。
↑リンク先にAVI (https://yoshi-s.cocolog-nifty.com/cpu/files/IchigoClockDynamic.avi)
BASICは遅いという先入観があって、本当にダイナミック表示できるのだろうかと思っていたが、それほどチラつきもなくできてしまった。CortexM0 48MHzだから当然か?
8x8マトリクスLEDもIchigoJamだけで表示できそうな気がしてきたが、出力ポートが足りない。
OUT 8、OUT 9で入力ポートが出力ポートになればいいのになあ。
と書いたら、Ver1.1 beta 6でIN 1~IN 4がOUT 8~OUT 11に割り当て可能になったようだ。
- IchigoJam(2015/03/30)
- IchigoJam BASICのFOR/NEXT(2015/04/05)
- IchigoJam BASICのFOR/NEXT(2)(2015/04/07)
- IchigoJam(2) -IchigoJamそっくりさんを作る-(2015/05/17)
- IchigoJam(3) -超小型ARMマイコン基板- (2015/05/)
- IchigoJam(4) -モリダンプ・プログラム-(2015/06/01)
- IchigoJam(5) -HDSP0670を使った4digit clock-(2015/09/24)
- IchigoJam(6) <4桁時計ダイナミック表示>(2015/10/13)
- IchigoJam(7) <OUT8~OUT11使用 4桁時計ダイナミック表示>(2015/10/19)
- IchigoJam,(8) <8x8LED>
- IchigoJam(9) <8x8LEDで8Qeen問題>(2015/11/10)
- IchigoJam(10) <LED&KEY>(2018/04/08)
- IchigoJam(11) <LED&KEYを機械語で>(2018/04/15)
« CDP1802 | トップページ | 類人猿分類公式マニュアル2.0 <人間関係に必要な知恵はすべて類人猿に学んだ> »
「CPUボード」カテゴリの記事
- 久々の物欲(2022.05.21)
- stcgal <質問に答える>(2021.02.21)
- micro:bitで跳び上がると表示する名札 <ウケ狙い>(2020.11.18)
- micro:bit <BLEが乗った低価格マイコンボード>(2020.09.15)
- Google日本語モールス入力(2020.05.01)
「IchigoJam」カテゴリの記事
- IchigoJam(11) <LED&KEYを機械語で>(2018.04.15)
- IchigoJam(10) <LED&KEY>(2018.04.08)
- IchigoJam(10) <8x8LEDを光センサーにする>(2015.11.17)
- IchigoJam(9) <8x8LEDで8Qeen問題>(2015.11.10)
- IchigoJam(8) <8x8LED>(2015.11.04)
「プログラミング」カテゴリの記事
- GMC-4で動く3連ナイトライダー(2022.12.30)
- プログラミング言語ランキング(2022.11.19)
- AWSでサービス構築(2022.05.29)
- Excelの配列式(2022.01.06)
- ローコード・プログラミング(2021.11.07)
« CDP1802 | トップページ | 類人猿分類公式マニュアル2.0 <人間関係に必要な知恵はすべて類人猿に学んだ> »
コメント