3.課題と競技会に関するレポート
課題
競技1.スピード競争(Autonomous Speed Circuit)の競技会につかうマシンを構成する。
使用したプログラム
Private Sub cmdTotalSensor_Click()'ボタンが押されたらこのVBの
'サブルーチンが実行される
RCX.SelectPrgm (4)
With RCX
.BeginOfSub (1) 'ステアリングその1
.Off "2" '一度駆動モータを止める
.Wait 2, 50 '0.5秒待って
.While 9, 2, 2, 2, 3 '角度センサーの値が3になるまで
.SetFwd "0" 'ステアリングモータを回す
.On "0"
.EndWhile
.Off "0" 'ステアリングモータをOff
.Wait 2, 50 '0.5秒待って
.On "2" '駆動モータをOn
.If 9, 0, 1, 2, 42 '黒を感知したら
.Off "2"
.While 9, 2, 2, 2, 4 '角度センサの値が4になるまで
.SetRwd "0" 'ステアリングモータを回す
.On "0"
.EndWhile
.Off "0"
.Wait 2, 50
.On "2"
.EndIf
.EndOfSub
.BeginOfSub (2) 'ステアリングその2
.Off "2" '駆動モータをOff
.Wait 2, 50
.While 9, 2, 2, 2, 5 '角度センサの値が-1になるまで
.SetFwd "0" 'ステアリングモータを回す
.On "0"
.EndWhile
.Off "0" 'ステアリングモータをOff
.Wait 2, 50 '0.5秒待って
.On "2" '駆動モータをOn
.If 9, 0, 1, 2, 42 '光センサが黒を感知したら
.Off "2" '駆動モータをOff
.While 9, 2, 2, 2, 4 '角度センサの値が-2になるまで
.SetRwd "0" 'ステアリングモータを回す
.On "0"
.EndWhile
.Off "0" 'ステアリングモータをOff
.Wait 2, 50 '0.5秒待って
.On "2" '駆動モータをOn
.EndIf
.EndOfSub
.BeginOfTask (0)
.SetSensorType 0, 3 '光センサをポート0と定義
.SetSensorMode 0, 4, 0 '光センサの値をパーセントに定義
.SetSensorType 2, 4 '角度センサをポート2と定義
.SetSensorMode 2, 7, 0 '角度センサーの値を角度に定義
.SetPower 2, 2, 2 '駆動モータのパワーを2に設定
.AlterDir "2"
.On "2" '駆動モータをOn
.Off "0" 'ステアリングモータはOff
.Loop 2, 0 '無限ループ
.If 9, 0, 0, 2, 65 '銀色の領域にいるとき
.PlaySystemSound 3 '音を鳴らす
.Wait 2, 100
.EndIf
.If 9, 0, 2, 2, 52 '光センサーが白を感知したら
.GoSub (1) 'サブルーチン1へ
.EndIf
.If 9, 0, 2, 2, 46 '光センサーが灰色を感知したら
.GoSub (2) 'サブルーチン2へ
.EndIf
.EndLoop
.EndOfTask
End With
End Sub
|
マシンの構造の説明
フォームに取り付けたボタン”Total Sensor”を押すと、プログラムがRCXにダウンロードされる。
RCXの入力ポート1に光センサを、入力ポート3に角度センサをそれぞれ取り付ける。
出力ポートAに取り付けたモーターは前輪の角度を調節するためのステアリングモータとして使用する。
出力ポートCに取り付けたモーターは後輪を前進させるための駆動モータとして使用する。
ステアリングは角度センサとステアリングモータで制御する。
プログラムのフローチャート
★前進(光センサが黒色の上を通過しているはずの状態)⇒
光センサが黒色以外を感知した時⇒Task0実行⇒
Task0
光センサが銀色を感知した時⇒音を鳴らす⇒★に戻る
光センサが白色を感知した時⇒サブルーチン1へ
光センサが灰色を感知した時⇒サブルーチン2へ
サブルーチン1
コースアウトしないように前輪を時計回りに傾けて黒色を感知させるようにする⇒★に戻る
サブルーチン2
コースアウトしないように前輪を反時計回りに傾けて黒色を感知させるようにする⇒★に戻る
競技会
なぜか1回もカーブを曲がりきってくれないという悲惨なことになった。
考察
プログラムは合っていると考えられるから、マシンの構造が悪かったのではないかと考えられる。
テキストp.22のヒント「ステアリング機構のギア比、前輪と後輪の間隔、センサをつける位置、車体の大きさ、電池の残量等に気をつけないとうまくコースを回ることができない。」というのが非常に的を射ていると考えられる。この辺りをもっと時間をかけてやりたかった。
|