目次

交通信号テスト

 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

 回路が、正しく動くことがわかったので
 車側の信号をエミュレートしてみます。

 シーケンスは、以下。
  1. turn on green LED
  2. turn on yellow LED
  3. turn on red LED
  4. 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を点灯するのかを  まとめていきます。
  1. turn on green LED(car) , turn on red LED(walker)
  2. turn on yellow LED(car), turn on red LED(walker)
  3. turn on red LED(car), turn on green LED(walker)
  4. turn on red LED(car), blink green LED(walker)
  5. 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命令で与える  数値を拾いだしてみると、以下。
  1. turn on green LED(car) , turn on red LED(walker) => OUT 17
  2. turn on yellow LED(car), turn on red LED(walker) => OUT 20
  3. turn on red LED(car), turn on green LED(walker) => OUT 36
  4. turn on red LED(car), blink green LED(walker) => OUT 4 / OUT 36
  5. 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  方向指示器が用意されているので、シーケンスを加えます。
  1. turn on green LED(car) , turn on red LED(walker) => OUT 17
  2. turn on green LED(car) , turn on red LED(walker) , turn on direct LED => OUT 28
  3. turn on yellow LED(car), turn on red LED(walker) => OUT 20
  4. turn on red LED(car), turn on green LED(walker) => OUT 36
  5. turn on red LED(car), blink green LED(walker) => OUT 4 / OUT 36
  6. 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

目次

inserted by FC2 system