*壁に沿うロボット         program editer Hideshi  [#ec3bdb30]
**機体概要 [#a9c17b01]
-[[機体概要>2005/A3/課題2右/機体]]
**基本プログラム [#w3ef1099]
 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);}
                                       //同上
-基本的の動作(前進、後退、左折、右折)を、サブルーチンで定義 [#f8d7ae32]
**実際に動かす(機体の前と右にセンサーを設置) [#ffcbbee1]
 task main()
 {SetSensor(SENSOR_2,SENSOR_TOUCH);      //front sensor
 SetSensor(SENSOR_3,SENSOR_TOUCH);                    //right sensor
 while(true)
 {Go();
 if(SENSOR_2==1){Back();Left_Turn();Go();Off(OUT_C);Wait(30);Go();Wait(80);};  
                                                          //If sensor of only front turn on,the machine turn left.
 if(SENSOR_3!=1){Wait(80);Right_Turn();Go();Wait(50);Off(OUT_C);Wait(10);Go();Wait(80);};}
                                                         //if sensor of only right turn off,the machine turn right
 }
***工夫点 [#zf8acdc6]
-Simple is best. 
-センサーの感度が高いため、機体の右にあるセンサーがあまり作動しないようにプログラミングした。
-機体が右折したりすると、どうしても機体が壁から離れてしまうので、曲がった直後のしばらくは壁よりに進むようにした。
-もし仮に壁から離れてしまっても、自動的に近づくようにした。

***コメントをお願いします [#o2db3b29]
-タッチセンサの感度はセンサ部分をどのようなメカニズムにするかに依存していますので、プログラムを工夫するのと同時に適度な感度になるようメカも工夫してください。可動部の支点の位置やゴムバンドの使い方も工夫してみてください。 -- [[松本(教員)]] &new{2005-11-26 (土) 09:11:25};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS