目次
前
次
夜間点滅器(その1)
夜になると、LEDを点滅させて、その場所に
物体があることを示したり、引き戸の存在を
教えられるようにする装置が、夜間点滅器と
なります。
昼夜の判定は、次のような回路を利用します。
回路に与える電源電圧は、IchigoJamの電源電圧と
同じにしておきます。
光が入ると、光電流が流れて、抵抗に電圧が発生します。
この電圧を論理値の'1'とみなして、昼と判定します。
昼なら論理値'1'が得られるので、夜なら論理値'0'と
いうこと。上の回路の出力をIN関数で読込んで、点滅
させれば、夜間点滅器の出来上がり。
部品と入手できるのは、次のようなLEDのような
形をしているデバイスです。
回路の出力をIN関数で取込んで、判定して
点滅の仕事をする部分(サブルーチン)を
呼出すことにすると、プログラムは以下。
30 LET N,IN(1)
40 IF N=0 GOSUB 110 ELSE GOSUB 120
LEDの点滅なので、LEDを出力ピンの1に接続すると
考えると、回路は次のようになります。
LEDの点灯、消灯には、論理値'1'、'0'をOUT命令で
与えればよいので、サブルーチンは、以下とすれば
よいでしょう。
100 ' flashing
110 OUT 1,1 : WAIT D
120 OUT 1,0 : WAIT D
130 RETURN
コンピュータの動作は速いので、WAIT命令を利用して
無駄時間を稼ぐようにします。
全体のプログラムは、以下。
10 ' night flasher
20 LET D,60 : GOSUB 120
30 LET N,IN(1)
40 IF N=0 GOSUB 110 ELSE GOSUB 120
50 IF BTN() GOTO 70
60 GOTO 30
70 ? "EXIT"
80 END
100 ' flashing
110 OUT 1,1 : WAIT D
120 OUT 1,0 : WAIT D
130 RETURN
WAIT命令に与える数値を、予め変数Dに入れます。
昼夜判定回路の出力する情報を入力して、判定後
点滅サブルーチンを呼出しています。
点滅サブルーチンには、点灯と消灯があるので
消灯を点灯の後において、点滅と消灯を違う行
番号にしておくと、最初の初期化でLEDを消灯
できます。
点滅をFOR...NEXTを利用して書くこともできます。
10 ' night flasher
20 LET D,60 : GOSUB 130
30 LET N,IN(1)
40 IF N=0 GOSUB 100 ELSE GOSUB 130
50 IF BTN() GOTO 70
60 GOTO 30
70 ? "EXIT" : GOSUB 130
80 END
100 ' flashing
110 FOR J=0 TO 1 : OUT 1,J : WAIT D : NEXT
120 RETURN
130 ' turn off LED
140 OUT 1,0
150 RETURN
点滅をFOR...NEXTで書くと、途中にある消灯を
サブルーチンとして使えないので、消灯は別に
書いておきます。
IchigoJamの基板には、標準でLEDがひとつ用意されて
います。これを夜間点滅器のランプに使えます。
基板上のLEDは、LED命令で点灯、消灯ができるので
OUT命令で動かしている点滅を、LED命令でおきかえ
ればよいでしょう。
10 ' night flasher
20 LET D,60 : GOSUB 130
30 LET N,IN(1)
40 IF N=0 GOSUB 100 ELSE GOSUB 130
50 IF BTN() GOTO 70
60 GOTO 30
70 ? "EXIT" : GOSUB 130
80 END
100 ' flashing
110 FOR J=1 TO 0 STEP -1 : LED J : WAIT D : NEXT
120 RETURN
130 ' turn off LED
140 LED 0
150 RETURN
このプログラムは、点滅しないときに、ハードウエアに
問題があるのか、書いた命令がよくないのかを切分ける
ことに利用できるでしょう。
ラベル利用で、もっとわかりやすくなります。
10 ' night flasher
20 LET D,60 : GSB @LOFF
30 @LOOP
35 LET N,IN(1)
40 IF N=0 GSB @FLASH ELSE GSB @LOFF
50 IF BTN() GOTO @EXIT
60 GOTO @LOOP
70 @EXIT
75 ? "EXIT" : GSB 130
80 END
100 @FLASH
110 FOR J=1 TO 0 STEP -1 : LED J : WAIT D : NEXT
120 RTN
130 @LOFF
140 LED 0
150 RTN
目次
前
次