目次

夜間点滅器(その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


目次

inserted by FC2 system