SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

時計シールド

IchigoJam/IchigoDakeに差して時計を表示する拡張基板です。
上田のクラブで「時計を作りたい」という子が何人かいたので、簡単にはんだ付けして作れる基板を目指して開発しました。
紹介動画はこちら。

www.youtube.com


7セグメントLED×6個で、時:分:秒を表示します。

回路図


10進カウンタIC・4026を内蔵した7セグメントLEDを使って、簡単な回路にしています。
時、分、秒それぞれ2個1組の7セグメントLEDへ、クロックパルスを送ると+1ずつカウントアップします。リセットパルスを送ると「00」にリセットされます。

クロックパルス リセットパルス
OUT1 OUT2
OUT3 OUT4
OUT5 OUT6

例えば秒表示は、

OUT 1,1:OUT 1,0

で、+1カウントアップします。

OUT 2,1:OUT 2,0

で、リセットされて「00」表示になります。
カウンタICが値を保持して数字を表示するので、プログラム側で面倒なダイナミック表示などをしなくて済みます。

基板データ

*同じ基板を3枚配置しています。
*この基板データは、CC BYライセンスとします。どうぞご利用ください。

(C) 2023 Shiro Saito (https://www.ichigoaman.jp)

時計プログラム

  • 実行すると、時・分を聞かれるので数字で入力します。
  • 画面と7セグメントLEDに時計が表示されます。
10 '*CLOCK SHIELD
20 CLV:VIDEO 3:CLS
30 OUT 2,1:OUT 2,0
40 OUT 4,1:OUT 4,0
50 OUT 6,1:OUT 6,0
60 INPUT "H=",H
70 INPUT "M=",M
80 CLS:CLT
90 @SETM
100 IF M=0 GOTO @SETH
110 FOR A=1 TO M
120 OUT 3,1:OUT 3,0
130 NEXT
140 @SETH
150 IF H=0 GOTO @LOOP
160 FOR A=1 TO H
170 OUT 5,1:OUT 5,0
180 NEXT
190 @LOOP
200 T=TICK()
210 IF T%60=0 GSB @CHGS
220 IF T%3600=0 GSB @CHGM
230 LC 0,0
240 ?DEC$(H+100,2);":";DEC$(M+100,2);":";DEC$(S+100,2)
250 WAIT 1
260 GOTO @LOOP
270 @CHGS
280 OUT 1,1:OUT 1,0
290 S=S+1
300 IF S<60 RTN
310 OUT 2,1:OUT 2,0
320 S=0
330 RTN
340 @CHGM
350 OUT 3,1:OUT 3,0
360 OUT 2,1:OUT 2,0
370 M=M+1:CLT
380 IF M<60 RTN
390 OUT 4,1:OUT 4,0
400 M=0:H=H+1
410 OUT 5,1:OUT 5,0
420 IF H>23 H=0:OUT 6,1:OUT 6,0
430 RTN

IchigoJam内部のタイマーで時計を動かしているので、あまり精確ではありません。
RTC(時計モジュール)を付けて時刻を読み取るようにすると、もっと精確な時計になるでしょう。
RTCモジュールについて詳しくはこちら。

最後に

今回の基板は、要は「2個×3組の7セグメントLEDで数字を表示する基板」です。
プログラム次第で、時計以外にもいろいろな用途に使えます。