目次
前
次
夜間点滅器の実験
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の回路をブレッドボードに組み上げると以下。
目次
前
次