目次
前
次
交通信号テスト
IchigoJam体験会で使われている交通信号をテストします。
知人から渡された交通信号機の接続は
次のようになっていました。
ダイレクトモードで、回路の接続が
正しいかを、テストしてみました。
OUT 0 ' turn off all LEDs
OUT 1 ' turn on green LED
OUT 2 ' turn on yellow LED
OUT 4 ' turn on red LED
OUT 8 ' turn on right arrow LED
OUT 16 ' turn on stay LED
OUT 32 ' turn on walk LED
回路が、正しく動くことがわかったので
車側の信号をエミュレートしてみます。
シーケンスは、以下。
- turn on green LED
- turn on yellow LED
- turn on red LED
- return first stage
これをプログラムに変換すると、以下。
10 ' TS test
20 @LOOP
30 OUT 1
40 OUT 2
50 OUT 4
60 GOTO @LOOP
70 END
実行すると、3つのLEDが点滅しているよう
にしか、見えないので待ち時間を入れてます。
10 ' TS test
20 @LOOP
30 OUT 1:WAIT 60*2
40 OUT 2:WAIT 60
50 OUT 4:WAIT 60*3
60 GOTO @LOOP
70 END
つぎに歩行者側の信号の動作をテストしてみます。
歩行者側の信号は、赤、緑を交互に点灯する他に
緑を点滅させた後、赤に戻せば、うまくいきそう。
歩行者側の赤は、「OUT 16」で点灯
緑は、「OUT 32」で点灯。
これを、まとめていきます。
10 ' TS test 2
20 @LOOP
30 OUT 16:WAIT 60
40 OUT 32:WAIT 60*2
50 FOR I=1 TO 3
60 OUT 32:WAIT 60:OUT 0:WAIT 60
70 NEXT
80 GOTO @LOOP
90 END
車と歩行者の2種の信号を、動かすことを
考えてみます。
どういうシーケンスで、5LEDを点灯するのかを
まとめていきます。
- turn on green LED(car) , turn on red LED(walker)
- turn on yellow LED(car), turn on red LED(walker)
- turn on red LED(car), turn on green LED(walker)
- turn on red LED(car), blink green LED(walker)
- return first stage
OUT命令にパラメータとして整数値を与えて
車と歩行者側のLEDの点灯パターンを調べる
プログラムを作って、動かしてみます。
10 '
20 @LOOP
30 FOR I=0 TO 65
40 OUT I:? I:WAIT 120
50 NEXT
60 GOTO @LOOP
70 END
このプログラムとシーケンスで、OUT命令で与える
数値を拾いだしてみると、以下。
- turn on green LED(car) , turn on red LED(walker) => OUT 17
- turn on yellow LED(car), turn on red LED(walker) => OUT 20
- turn on red LED(car), turn on green LED(walker) => OUT 36
- turn on red LED(car), blink green LED(walker) => OUT 4 / OUT 36
- return first stage
OUT命令に与えるパターンがわかったので、押しボタン
スイッチを押したときに、歩行者側の信号が動くように
プログラムを作ってみます。
10 ' TS test 3
20 @LOOP
30 OUT 17
35 IF BTN()=0 GOTO 30
40 OUT 20:WAIT 60*2
50 OUT 36:WAIT 60*3
60 FOR I=1 TO 3
62 OUT 36:WAIT 60:OUT 4:WAIT 60
64 NEXT
70 GOTO @LOOP
80 END
方向指示器が用意されているので、シーケンスを加えます。
- turn on green LED(car) , turn on red LED(walker) => OUT 17
- turn on green LED(car) , turn on red LED(walker) , turn on direct LED => OUT 28
- turn on yellow LED(car), turn on red LED(walker) => OUT 20
- turn on red LED(car), turn on green LED(walker) => OUT 36
- turn on red LED(car), blink green LED(walker) => OUT 4 / OUT 36
- return first stage
シーケンスができれば、BASICコードに落としこめます。
10 ' TS test 4
20 @LOOP
30 OUT 17:WAIT 60
32 OUT 28:WAIT 60*2
34 OUT 17
36 IF BTN()=0 GOTO 34
40 OUT 20:WAIT 60*2
50 OUT 36:WAIT 60*3
60 FOR I=1 TO 3
62 OUT 36:WAIT 60:OUT 4:WAIT 60
64 NEXT
70 GOTO @LOOP
80 END
目次
前
次