*目次 [#pdbe1a7d]
#contents
*課題について [#s030a29a]
課題2は光センサーを使ったライン・トレース・ロボットの製作

コースは以下の通り(課題2のページより)
#ref(./コース.png,50%)
-A地点からB地点へ (P三叉路およびQ交差点はともに直進)
-B地点からA地点へ (Q交差点では直進、P三叉路では直進)
-C地点からA地点へ (Q交差点では直進、P三叉路では右折)

また、これらの経路の途中(PQ間)においたボールをゴールまで運ぶこと。三叉路および交差点では二秒間停止すること。

今回は、B地点からA地点のコースとする。
*本体について [#j1672ef1]
*プログラムについて [#z4ee3701]
**ライントレース [#hb0a73c2]
一番初めに組んだもの。五段階に光を分けた。

 #define hikari 50
 #define SPEED1 55
 #define SPEED 25
 
 #define turn_left OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);
 #define TURN_LEFT OnFwd(OUT_B,SPEED);
 #define go_forward OnFwd(OUT_BC,SPEED1);
 #define TURN_RIGHT OnFwd(OUT_C,SPEED);
 #define turn_right OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED);
 
 #define STEP 2
 
 task main(){
 
    SetSensorLight(S3);
 
    while(true){
 
     if(SENSOR_3<hikari -7){
      turn_left;
     }else{
       if(SENSOR_3<hikari -3){
         TURN_LEFT;
       }else if(SENSOR_3<hikari +3){
         go_forward;
       }else if(SENSOR_3<hikari +10){
         TURN_RIGHT;
       }else{
         turn_right;
        }
     }
    }
 }
この時、ロボットは線の左端をなぞった。
**交差点・三叉路 [#k3c8fb05]
交差点や三叉路の判定にはカウンターを使うことにした。

また、上のプログラムではコースをうまくなぞらなかったので、線の右端をなぞるようにした。(左右を反転させた)
**ボールを運ぶ [#qf87d8a7]


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