目次

ハードウエアテスト(その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


目次

inserted by FC2 system