'''&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] &ref(./20100701095003.jpg); &ref(./20100701095532.jpg); **光センサー [#v6f8a1e0] #ref(./20100701094854.jpg); 黒線を挟む形にしました。急なカーブがあるので、間隔は少し広めです。 **工夫点 [#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(90);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; //180°回転 up;Wait(60);Off(OUT_B); //アームを上げる turn; //180°回転 } } } task line_trace() { while (true) { if((SENSOR_1>THRESHOLD)&&( SENSOR_3>THRESHOLD)) //センサ−1と3が黒線上にないとき {go;} //まっすぐ進む if(SENSOR_1<THRESHOLD) //センサー1が黒線上にきたら {OnFwd(OUT_A); //右へ曲がる OnRev(OUT_C);} if(SENSOR_3<THRESHOLD) //センサー3が黒線上にきたら {OnRev(OUT_A); //左へ曲がる OnFwd(OUT_C);} else //センサー1と3が黒線上にきたら {Off(OUT_A+OUT_C); //1.0秒止まる Wait(100); go; //1.0秒進む Wait(100);} } } **キングオブハートのプログラム [#a28e0ac2] *感想 [#w0240ffb] ** D [#v4753e74] 前回よりも難しかった。缶をどう動かすか考えるのが大変だった。 ** [#q8a9ed1a] *コメント [#hc6da08f] コメントをどうぞ #comment