目次 #contents *ロボットについて [#u62a9aac] 私たちが今回作成したのはライントレースマシンである。これは線を引いた上を走るというロボットである。図にあるようなライントレースマシンは前回作った別のロボットの設計問題(字を書く際に紙が動いてしまう...etc)を考慮しながら作成していった。今回工夫したのは光センサーが反応する位置と動かなければならない位置との距離を短くするためにモータのある位置付近に光センサーを設置した。また場所によって光センサーの反応する値の変化を少なくするために光センサーと地面との距離を短くした。 #ref(image2.JPG) *プログラミング [#gd0a47e1] スピードや動かす方向を定義したもの #define THRESHOLD 49//33(黒線に対して光センサーが反応した値)+65(白に対して光センサーが反応した値)÷2 #define SPEED_L 50//モーターの50%の出力 #define SPEED 25//モーターの25%の出力 #define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);//前後左右に動かせる #define go_forward OnRL(SPEED_L,SPEED_L);//直進 #define turn_left1 OnRL(SPEED_L,-SPEED_L);//左旋回 #define turn_left0 OnRL(SPEED_L,-SPEED);//若干左に回る #define turn_right0 OnRL(-SPEED,SPEED_L);//若干右に回る #define turn_right1 OnRL(-SPEED_L,SPEED_L);//右旋回 #define STEP 1 #define tMAX 350 #define short_break Off(OUT_BC);Wait(1000); #define CROSS_TIME 200 #define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break; #define MOVE_TIME 500 SetSensorLight(S3); long t0=CurrentTick(); int nOnline=0; while(true){ if(CurrentTick()-t0<tMAX){ if(SENSOR_3<THRESHOLD-9){ turn_left1; }else{ if(SENSOR_3<THRESHOLD-5){ turn_left0; }else if(SENSOR_3<THRESHOLD+5){ go_forward; }else if(SENSOR_3<THRESHOLD+9){ turn_right1; }else{ turn_right0; }t0=CurrentTick(); Wait(STEP); } }else{ Off(OUT_BC); turn_right0; Wait(275); if(nOnline<1){ turn_left1; Wait(500); }else if(nOnline<2){ turn_right1; Wait(520); }else if(nOnline<3){ turn_left1; Wait(500); }else if(nOnline<4){ go_forward; Wait(200); } go_forward; Wait(200); nOnline++; t0=CurrentTick(); Wait(STEP); } } } *作成時における問題と解決方法 [#v06b571b] *結果・反省 [#j39f5243] *感想 [#n92be6ce]