壁に沿うロボット program editer Hideshi

機体概要

基本プログラム

sub Go(){OnFwd(OUT_A+OUT_C);}     
                    //前進
sub Back(){OnRev(OUT_A+OUT_C);Wait(19);Off (OUT_A+OUT_C);}
                   //後退(後退は壁に接触した時に行なうが、そのまま曲がると機体の構造上
                                                                             ぶつかってしまうので、少し後退する必要があった)
                  //Wait(19)という中途半端な数字を設定したのは、機体が曲がる時に、壁から離れすぎないように、
                                                         かつ、ぶつからないように微調整した結果
sub Left_Turn(){OnRev(OUT_A);OnFwd(OUT_C);Wait(60);}
                 //今回は機体の動力部を完全に分解して、車幅を狭めたので、始めの機体の時よりも Wait の値を小さくした
sub Right_Turn(){OnRev(OUT_C);OnFwd(OUT_A);Wait(60);}
                 //同上

実際に動かす(機体の前と右にセンサーを設置)

task main()
{SetSensor(SENSOR_2,SENSOR_TOUCH);      
                                 //機体前部につけたタッチセンサー
SetSensor(SENSOR_3,SENSOR_TOUCH);                    
                                 //機体の右側につけたタッチセンサー
while(true)
{Go();
                                 //機体の右側につけたセンサーがオン状態の時、機体はまっすぐ進む
if(SENSOR_2==1){Back();Left_Turn();Go();Off(OUT_C);Wait(30);Go();Wait(80);};  
                                 //センサー2(機体前部の前部)が作動した場合
                                        //1、下がって、左へ90°曲がる
                                        //2、右側のモータを止め、左側のモータのみを動かし、機体の右側が壁に接地するようにする(詳しくは機体概略まで)
if(SENSOR_3!=1){Wait(80);Right_Turn();Go();Wait(50);Off(OUT_C);Wait(10);Go();Wait(80);};}
                                 //機体の右側の壁がなくなった場合=右側のセンサーがオフになった場合
                                         //1、すぐに曲がると壁にぶつかってしまうので、しばらく前進した後、右折
                                         //2、センサー2と同じ                  
}

工夫点

特典

コメントをお願いします



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-02 (金) 14:43:30