不
不破さん (7l7pvyk0)2021/1/2 14:44質問をありがとう.
通常は時計として動いていて,設定した時刻になったらブザーが鳴ったりLEDが光るものを作りたいということですね.
一緒に考えてみましょう(1歩づつ説明するので長い説明となりますが,簡単です).
まず,通常の時計を作ってみましょう.パソコンなどは,内部にリアルタイムクロックという素子が入っていて,この素子が常に現在の時刻を刻んでいるのですが,IchigoJamにはそのような素子はありません.
でも,wait命令で時間を計ることができるので,これを組み合わせて時計を作る事ができます.
ここで,次の3つの変数を用いる事にします.
S:秒の値が入っている変数
M:分の値が入っている変数
H:時の値が入っている変数
時計の基本は1秒を計測することです.これは
WAIT60
とすると1秒計測できますね.そして,そのときにSの値を1つ増やします.
BASICで書くと次のようになりますね.
WAIT60:S=S+1
次にS(秒)が60になったらM(分)の値を1つ増やしてS(秒)を0に戻すと分の計測ができますね.
先ほどのプログラムの後ろにこの事をBASICで書くと次のようになりますね.
WAIT60:S=S+1
IF S=60 THEN M=M+1:S=0
さらに,Mの値を増やした時にそのM(分)の値が60になったら,H(時)の値を1つ増やしてM(分)の値を0に戻すと時の計測ができますね.
先ほどのプログラムにこのことを付け足すと,次のようになりますね.
WAIT60:S=S+1
IF S=60 THEN M=M+1:S=0:IF M=60 THEN H=H+1:M=0
最後に,Hの値を増やした時にHの値が24になったら,翌日になるのでHの値を0にする必要があります.そこ事を付け足すと,次のようになります.
WAIT60:S=S+1
IF S=60 THEN M=M+1:S=0:IF M=60 THEN H=H+1:M=0:IF H=24 THEN H=0
以上をまとめると,次のプログラムができあがります.
10 H=23:M=58:S=45
20 CLS:LOCATE 0,0:? H;":";M;":";S
30 WAIT60:S=S+1
40 IF S=60 THEN M=M+1:S=0:IF M=60 THEN H=H+1:M=0:IF H=24 THEN H=0
50 GOTO20
なお,10行目はこのプログラムを動かし始める時刻をセットする行です.
例えば,今が8時15分30秒だったとしたら,
10 H=8:M=15:S=30
としてください.
まず,このプログラムを理解して,IchigoJamに入力して動かしてみてください.
そのあと,また掲示板で報告してください.次は特定の時刻になったらブザーを鳴らすことにしましょう.
よろしくお願いします.