使用する機材
・プログラミング列車
・ドッグレール
・マイクロビット
・信号機
目的
信号機のAボタンを押すと
信号機が、5秒ごとに「青」→「黄」→「赤」に変わる。
プログラミング列車は信号機の指示に従って走行する。
「青:速く走行」「黄:ゆっくり走行」「赤:停車」
プログラム
(プログラミング列車と信号機を無線でつなぐ)
(青→速く)(黄→ゆっくり)(赤→停車)
【信号機のプログラム】

解説(信号機のプログラム)
① 今回は、マイクロビットのLEDを使わないので、「偽」 にします。
② 無線が飛ぶ距離を7にします。
距離:1~7(1→近く)(7→遠く)
③ 無線のチャンネルを「1」にします
(信号機とプログラミング列車は、同じチャンネルにします)
「信号の色を変えるブロックグループ」
④ Aボタンが押されたら
⑤ 1000回繰り返します。
⑥ ” 青 ” を点けます
(P13=青)
⑦ 黄を消します。
(P15=黄)
⑧ 赤を消します。
(P14=赤)
⑨ 変数「信号指示」に ” 青 ” を入れます。
⑩ 5秒間待ちます。-青が点いたまま-
(5000=5秒)
⑪ 青を消します。
(P13=青)
⑫ 黄を点けます。
(P15=黄)
⑬ 赤を消します。
(P14=赤)
⑭ 変数「信号指示」に ” 黄 ” を入れます。
⑮ 5秒間待ちます。-黄が点いたまま-
(5000=5秒)
⑯ 青を消します。
(P13=青)
⑰ 黄を消します。
(P15=黄)
⑱ 赤を点けます。
(P14=赤)
⑲ 変数「信号指示」に ” 赤 ” を入れます。
⑳ 5秒間待ちます。-赤が点いたまま-
(5000=5秒)
「無線を送るブロックグループ」
㉑ もし、変数「信号指示」に ” 青 ” が入っていたら
㉒ 無線で列車に ” 青 ” を送信します。
㉓ もし、変数「信号指示」に ” 赤 ” が入っていたら
㉔ 無線で列車に ” 赤 ” を送信します。
㉕ もし、変数「信号指示」に ” 黄 ” が入っていたら
㉖ 無線で列車に ” 黄 ” を送信します。
---------------------------------------------------------------------------------------------------------------------------------------------------
【プログラミング列車のプログラム】

解説(プログラミング列車のプログラム)
① 今回は、マイクロビットのLEDを使わないので、「偽」 にします。
② 無線のチャンネルを「1」にします
(信号機とプログラミング列車は、同じチャンネルにします)
③ 変数「センサー」に ” 0 ” を入れます。
(ドッグレールの上に来たのかどうかを判断します)
④ 無線で「文字列」として受信します。
⑤ 変数「信号」に無線で受信した「文字列」を入れます。
⑥ 50ミリ秒ごとに、「位置センサーのプログラム」をくり返します。
(50ミリ秒=0.05秒)
⑦ もし、ドッグレールの上に来たら= ” 1 ” 。
そうでない時(ドッグレールの上に来ていない時)= ” 0 ”
(P16=位置センサー)
⑧ 変数「センサー」を ” 1 ” にします。
⑨ チャタリングを防ぐために1秒間待ちます。
(1000=1秒)
⓾ もし、変数「信号」が ” 青 ” なら
⑪ 1023のスピードで走行します。
(P13=前進)(1023=最高速度)
⑫ もし、変数「信号」が ” 黄 ” なら
⑬ 550のスピードで走行します。
(P13=前進)(550=ゆっくり速度)
⑭ もし、変数「信号」が ” 赤 ” なら & 変数「センサー」が ” 1 ” なら
⑮ 停車します。
⑯ 変数「センサー」を ” 0 ” にします。
※くわしく説明
・④ チャタリングとは
プログラミング列車が「ドッグレール」の上を通過する時間は、見た目では一瞬ですが実は「センサー」は、 ON→OFF→ON→OFFと繰り返しています。(数ミリ秒~数秒)
それでエラーを起こしてしまう事があるので、あえて「1秒間待つ」のプログラムを入れます。
・⑯ ここで、変数「センサー」が ” 0 ” にすることで、一旦リセットしています。