[[2009a/A1/課題1左]]~ 目次 #CONTENTS *ライントレースロボットを作ろう [#re055184] 条件は下の3つのどれかを満たせて線の上を走るロボット 1交差点上に牛乳パックを置き、それを迂回する。 2パックを動かして元の位置に戻す。 3パックを次の交差点まで運ぶ。 *コース [#u389bbc8] コースはデザイン重視で作ったため交差同士の距離が近かったり、コースの感覚が近かったりと難易度があがってしまいました。コースとしての面白みは無い気もするけど後戻りができないのでコレに決定! &ref(course.jpg); *ロボット [#gd075396] 本体やタイヤなどの基本パーツは教科書通りの物を使用。 タッチセンサーの部分は重さと力のモーメントを利用するために、上から長めになるように作成。下の突起物二つはパックを中心で捉えられるように設置。 パックを動かす部分の棒の先端にタイヤ *プログラミング [#yfaa5aeb] #define turnR OnFwd(c);OnRev(a);Wait(105);Off(a+c); #define turnL OnFwd(a);OnRev(c);Wait(83);Off(a+c); #define a OUT_A #define c OUT_C #define THRESHOLD 45 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); int x; x=0; while(true) {if(SENSOR_2==1) {OnRev(a+c);Wait(10); turnL; OnFwd(a+c);Wait(120); turnR; OnFwd(a+c);Wait(250); OnFwd(c);OnRev(a);Wait(120);Off(a+c);; OnFwd(a+c);Wait(150); Off(a+c) ;} if (SENSOR_1>THRESHOLD){ if (SENSOR_3>THRESHOLD){ OnFwd(a+c);} else{ OnFwd(a); Wait(5); Off(a);OnRev(c);Wait(1);Off(c);}}else{ if(SENSOR_3>THRESHOLD){OnFwd(c);Wait(5);Off(c);OnRev(a);Wait(1);Off(a);} else{OnFwd(a+c);Wait(10);Off(a+c);x = x + 1;}} if(x == 18) break;}} #define a OUT_A #define c OUT_C #define THRESHOLD 45 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); int x; x=0; while(true){ if(SENSOR_2==1){ OnFwd(a+c);Wait(120);Off(a+c); OnFwd(c);OnRev(a);Wait(200);Off(a+c); OnFwd(a);OnRev(c);Wait(100);Off(a+c);} if (SENSOR_1>THRESHOLD){ if (SENSOR_3>THRESHOLD){ OnFwd(a+c);} else{ OnFwd(a); Wait(7); Off(a); OnRev(c); Wait(1); Off(c); } } else{ if(SENSOR_3>THRESHOLD){ OnFwd(c); Wait(7); Off(c); OnRev(a); Wait(1); Off(a); } else{ OnFwd(a+c); Wait(10); Off(a+c); x = x + 1; } } if(x == 6)break; } }*まとめ [#e4cbe133] **コメントください* [#s30b4e80]