目次
前
次
ハードウエアテスト(その11)
シーリングファンには、Personal Computerのファンを
流用しています。
シーリングファンは、時間の経過とともに回転数が
変化すると、天井付近の空気が攪拌されてよいかと
考えました。
IchigoJamのV1.1からはPWM波形を出力できるように
なったので、次の回路ファンの電源に入れて、回転
数を制御することにします。
PWMのDUTY比と持続時間を、乱数で決めることに
します。
持続時間は、サブルーチンで指定します。
100 ' time count
110 LET L,RND(60)+1
120 FOR K=0 TO L
130 WAIT 60 ' about 1sec
140 NEXT
150 RETURN
最大1秒から60秒まで持続時間を設定できます。
PWM波形出力は、「OUT 2」とします。
PWM波形のDUTY比率は10%から90%としておきます。
20 LET D,RND(80)+10
30 PWM 2,D,100
40 GOSUB 100
50 IF BTN() GOTO 70
60 GOTO 20
2ブロックを構成することができたので、合体します。
10 ' ceiling fan
20 LET D,RND(80)+10
30 PWM 2,D,100
40 GOSUB 100
50 IF BTN() GOTO 70
60 GOTO 20
100 ' time count
110 LET L,RND(60)+1
120 FOR K=0 TO L
130 WAIT 60 ' about 1sec
140 NEXT
150 RETURN
上のプログラムでは、ファンの回転数と持続時間には
相関関係はないです。ファンの回転数が徐々に上下を
繰り返すことでも、天井近くの空気を攪拌できます。
PWM波形のDUTY比を10%から90%を繰返し、持続時間を
10秒と固定してみます。
10秒の持続時間をサブルーチンを変形して定義。
100 ' time count
110 FOR K=0 TO 9
120 WAIT 60 ' about 1sec
130 NEXT
140 RETURN
10%から90%までと90%から10%を繰り返すように
構成してみます。
20 FOR I=10 TO 90 : PWM 2,I,100 : GOSUB 100 : NEXT
30 IF BTN() GOTO 70
40 FOR I=90 TO 10 STEP -1 : PWM 2,I,100 : GOSUB 100 : NEXT
50 IF BTN() GOTO 70
60 GOTO 20
合体します。
10 ' ceiling fan 2
20 FOR I=10 TO 90 STEP +1 : GOSUB 100 : NEXT
30 IF BTN() GOTO 70
40 FOR I=90 TO 10 STEP -1 : GOSUB 100 : NEXT
50 IF BTN() GOTO 70
60 GOTO 20
70 ? "exit"
80 END
100 ' time count
110 PWM 2,I,100
120 FOR K=0 TO 9
130 WAIT 60 ' about 1sec
140 NEXT
150 RETURN
ひとつのFORで短くして、DUTY比を10%から90%を
繰り返してみます。
10 ' ceiling fan 3
20 FOR I=10 TO 90
30 GOSUB 100
40 NEXT
50 IF BTN() GOTO 70
60 GOTO 20
70 ? "exit"
80 END
100 ' time count
110 PWM 2,I,100
120 FOR K=0 TO 9
130 WAIT 60 ' about 1sec
140 NEXT
150 RETURN
ラベルを利用すると、次のようにも書けます。
10 ' ceiling fan 3
20 @LOOP
30 FOR I=10 TO 90
40 GSB @TNCT
50 NEXT
60 IF BTN() GOTO @EXIT
70 GOTO @LOOP
80 @EXIT
90 ? "exit"
95 END
100 @TNCT
110 PWM 2,I,100
120 FOR K=0 TO 9
130 WAIT 60 ' about 1sec
140 NEXT
150 RTN
目次
前
次