目次

夜間点滅器の実験

 IchigoJamの北海道Versionは、ペンダントと
 して利用できるので、昼夜を判定するセンサー
 をつけて、点滅器を作ってみます。

 光センサーには、次のデバイスを利用。



 ブレッドボードに、この光センサーを入れて
 テストします。(抵抗の値は、47kΩ)



 回路は、以下。



 光を受ける面を掌で覆ってみたときと
 そのままにしたときで、値がどう変わる
 のかを、実験。

 プログラムは、デバイスの出力電圧を入力
 して、表示と考えれば、以下でよいはず。

10 ' test CdS
20 ? ANA(2)
30 WAIT 60
40 IF BTN() GOTO 60
50 GOTO 20
60 END

 ラベルを使うと、より見やすくなります。

10 ' test CdS
20 LET W,60
30 @ADC
40 ? ANA(2)
50 WAIT W
60 IF BTN() GOTO @EXIT
70 GOTO @ADC
80 @EXIT
90 END

 今使っているセンサーの場合、暗くなると換算値は
 990くらいになっています。
 この値よりも大きいときには、IchigoJam基板の
 LEDを点滅させます。

 点滅を担当するプログラムを書いてみると
 次のようにすればよいでしょう。

100 ' flashing
110 LED 1:WAIT 60
120 LED 0:WAIT 60
130 RETURN

 この形式のプログラムをサブルーチンと呼びます。

 LEDを消したままとするサブルーチンも書いておきます。

140 ' turn off
150 LED 0:WAIT 60
160 RETURN

 サブルーチンを呼び出す側の動作を考えます。

 ある値よりも大きいときには、100行からの
 サブルーチンを呼び出します。
 そうでなければ、140行からのサブルーチン
 を呼び出せばよいはず。

 このようなときには、IFを使います。

10 ' test4
20 LET A,ANA(2)
30 IF A > 990 GOSUB 100 ELSE GOSUB 140
40 IF BTN() GOTO 60
50 GOTO 20
60 END

 LEDを点滅するサブルーチンと別のサブルーチンを
 くっつけてみると、以下。

10 ' test4
20 LET W,60
30 LET A,ANA(2)
40 IF A > 990 GOSUB 100 ELSE GOSUB 140
50 IF BTN() GOTO 70
60 GOTO 20
70 END
100 ' flashing
110 LED 1:WAIT W
120 LED 0:WAIT W
130 RETURN
140 ' turn off
150 LED 0
160 RETURN

 ラベルを利用すると、もう少し見やすくなります。

10 ' test4
20 LET W,60
30 @ADC
40 LET A,ANA(2)
50 IF A > 990 GSB @FLASH ELSE GSB @LOFF
60 IF BTN() GOTO @EXIT
70 GOTO @ADC
80 @EXIT
90 END
100 @FLASH
110 LED 1:WAIT W
120 LED 0:WAIT W
130 RETURN
140 @LOFF
150 LED 0
160 RETURN

 LEDの個数を増やして、表示器にしてみます。
 LEDは、ブレッドボード上に2個用意。



 ブレッドボードに部品をのせると、以下。



 サブルーチンに、2つのLEDを点灯していく
 仕事を追加してみます。

100 ' flashing
110 LED 1:WAIT W:OUT 1,1:WAIT W:OUT 2,1:WAIT W
120 LED 0:WAIT W:OUT 1,0:WAIT W:OUT 2,0:WAIT W
130 RETURN

 見えにくいので、少し整理しておきましょう。

100 ' flashing
110 LED 1:WAIT W
112 FOR I=1 TO 2
114   OUT I,1:WAIT W
116 NEXT
120 LED 0:WAIT W
122 FOR I=1 TO 2
124   OUT I,0:WAIT W
126 NEXT
130 RETURN

 点滅しないときは、2つのLEDには0を与える
 ようにすればよいはず。

140 ' turn off
150 LED 0:OUT 1,0:OUT 2,0
160 RETURN

 点滅と消灯ができたので、合体。

10 ' test4
20 LET W,60
30 LET A,ANA(2)
40 IF A > 990 GOSUB 100 ELSE GOSUB 140
50 IF BTN() GOTO 60
60 GOTO 30
70 END
100 ' flashing
110 LED 1:WAIT W
112 FOR I=1 TO 2
114   OUT I,1:WAIT W
116 NEXT
120 LED 0:WAIT W
122 FOR I=1 TO 2
124   OUT I,0:WAIT W
126 NEXT
130 RETURN
140 ' turn off
150 LED 0
160 RETURN

 ラベルを使って、次のようにもできます。

10 ' test4
20 LET W,60
30 @ADC
40 LET A,ANA(2)
50 IF A > 990 GSB @FLASH ELSE GSB @LOFF
60 IF BTN() GOTO @EXIT
70 GOTO @ADC
80 @EXIT
90 END
100 @FLASH
110 LED 1:WAIT W
112 FOR I=1 TO 2
114   OUT I,1:WAIT W
116 NEXT
120 LED 0:WAIT W
122 FOR I=1 TO 2
124   OUT I,0:WAIT W
126 NEXT
130 RETURN
140 @LOFF
150 LED 0
160 RETURN

 CdSの回路をブレッドボードに組み上げると以下。




目次

inserted by FC2 system