[[2016a/Member]] 目次 #contents *ロボット本体 [#x5cd2b28] こちらが本体です。ロボットの中心にセンサーを付けました。中心にセンサーを付けることによって小回りが聞くようにしました。 #ref(2016a/Member/ko/Mission1/image1(8).JPG,100%,robo) *コース [#g78072d9] #ref(2016a/Member/ko/Mission1 *プログラム [#w893fe4e] **定義 [#pc1528bf] #define TURNLEFT OnFwd(OUT_C); OnRev(OUT_A); /* 左回転 */ #define LEFT Off(OUT_A);OnFwd(OUT_C);/* 右回転 */ #define TURNRIGHT OnFwd(OUT_A); OnRev(OUT_C);/* 右回転 */ #define RIGHT Off(OUT_C);OnFwd(OUT_A)/* 右旋回 */ #define STRAIGHT Onfwd(OUT_AC) /* 直進 */ #define STEP 1 **サブルーチン [#e3985a07] sub trace(){ /* 交差点判定用のタイマをリセットする(ここから計測を始める) */ ClearTimer(0); while(FastTimer(0)){ /* 交差点判定を無効化している間は判定用のタイマをリセットし続ける */ if(FastTimer(0) <36 ){ ClearTimer(0); } if(54 <= SENSOR_2){ //白 TURNRIGHT; }else if(51 <= SENSOR_2) { //少し白 RIGHT; }else if(46 <= SENSOR_2) { //灰色 STRAIGHT; }else if(43 <= SENSOR_2) { // 少し黒 LEFT; }else { //黒 TURNLEFT; } /* 白を認識した場合、交差点判定用のタイマをリセットする */ if(44 <= SENSOR_2) ClearTimer(0); } Off(OUT_AC); PlaySound(SOUND_UP); Wait(100);//一秒間停止する ClearTimer(0); } 交差点を直進 sub go_straight() { STRAIGHT; Wait(30); } 交差点を左折 sub turn_left() { while(FastTimer(0)<160){ LEFT ; } ClearTimer(0); } 交差点を右折 sub turn_right() { while(FastTimer(0)<100){ RIGHT; } ClearTimer(0); } **本文 [#sd8c22fa] task main(){ /* センサを用意 */ SetSensor(SENSOR_2,SENSOR_LIGHT); /* 三秒間交差点判定を無効化 */ ClearTimer(0); trace(); /* 一つ目の交差点: 左折 */ turn_left(); trace(); /* 二つ目の交差点: 左折 */ turn_left(); trace(); /* 三つ目の交差点: 直進 */ go_straight(); trace(); /* 四つ目の交差点: 左折 */ go_straight(); trace(); /* 五つ目の交差点: 右折 */ turn_right(); trace(); /* 六つ目の交差点: 左折 */ turn_left(); trace(); } *反省・感想 [#wf5903fa]