'''&size(50){もくじ};''' #contents *メンバー [#pe466a45] -キングオブハート -D *課題 [#wcdeb407] 各チームで作成したコースを1周するロボットを製作せよ。交差点以外のコース上に350mlの空の空き缶を2個以上おき、空き缶にぶつかった時には次のような動作するプログラムを作成せよ。 &br; 1.空き缶をコース上に戻して再びコースに戻って進む &br; 2.空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに 沿って進む *ロボット [#x4c576f8] **アーム [#d863a37b] #ref(./20100629210055.jpg) #br #ref(./20100629210120.jpg) #br #ref(./20100629210203.jpg) **バンパー [#m86aa161] **光センサー [#v6f8a1e0] **工夫点 [#fbabbad0] アームをスムーズに動かすために、タイヤを付けました。 &br; タイヤの重さによりゆっくりと動くようになりました (ごつくなりました^_^; )。 #ref(./20100629210320.jpg) *コース [#t972ca7e] *プログラム [#gde31783] **D のプログラム [#w4564e6d] ***空き缶をコース上に戻して再びコースに戻って進むプログラム [#k8abb9a1] #define up OnFwd(OUT_B); //アームを上げる #define down OnRev(OUT_B); //アームを下げる #define turn OnFwd(OUT_A);OnRev(OUT_C);Wait(150);Off(OUT_A+OUT_C); //180°回転 #define go OnFwd(OUT_A+OUT_C); //直進 #define back OnRev(OUT_A+OUT_C); //後退 #define THRESHOLD 40 //闘値を40に設定 task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサーを1にセット SetSensor(SENSOR_2,SENSOR_TOUCH); //タッチセンサーを2にセット SetSensor(SENSOR_3,SENSOR_LIGHT); //光センサーを3にセット start line_trace; while (true) { start line_trace;//ライントレースを始める until(SENSOR_2 == 1);//タッチセンサーが反応すると stop line_trace;//ライントレースをやめる {Off(OUT_A+OUT_C); down;Wait(60);Off(OUT_B); turn; back;Wait(50); up;Wait(60);Off(OUT_B); turn; } } } task line_trace() { while (true) {if(SENSOR_1>THRESHOLD){ if(SENSOR_3>THRESHOLD){ OnFwd(OUT_A+OUT_C); } else{ if(SENSOR_1>THRESHOLD){ OnFwd(OUT_A); OnRev(OUT_C); } } } else{ if(SENSOR_3>THRESHOLD){ OnFwd(OUT_C); OnRev(OUT_A); } } } } **キングオブハートのプログラム [#a28e0ac2] *感想 [#w0240ffb] ** D [#v4753e74] 前回よりも難しかった。缶をどう動かすか考えるのが大変だった。 ** [#q8a9ed1a] *コメント [#hc6da08f] コメントをどうぞ #comment