[[2014a/Member]] 目次 #contents * 課題の説明 [#mffb653f] 詳しい説明は[[2014a/Mission1]]を参照 写真の入れかた例え:&ref(2014a/Member/mame/Mission1/sample2-small.jpg.30%); * メンバー [#j0ee8e63] mame dai * ロボット本体 [#g0b2bc6e] ** ライトセンサー [#jf97ef47] ** ドライブベース [#ta82ecff] ** アーム [#qa948bf2] * 課題 [#ff560aa8] * プログラム [#w9871f04] ** プログラムの概要 [#v140454d] #define THRESHOLD 37 //しきい値 #define THRESHOLD 37 //しきい値 #define SPEED_H 25 //最も早い速度 #define SPEED_L 20 //最も遅い速度 #define OnRL(speedR,speedL);OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL); //右・左車輪のスピード #define go_forward OnRL(SPEED_H, SPEED_H); //前進のスピード #define turn_left1 OnRL(SPEED_L, -SPEED_L); //左旋回 #define turn_left0 OnRL(SPEED_L, 0); //左に曲がる #define turn_right0 OnRL(0, SPEED_L); //右旋回 #define turn_right1 OnRL(-SPEED_L,SPEED_L); //右に曲がる #define STEP 1 //白と黒の境界をセンサが読む時間(1/1000秒) #define nMAX 300 //通常のカーブとして許容できる繰り返しの最大値 #define short_break Off(OUT_BC); Wait(1000); //小休止 #define CROSS_TIME 100 //交差点通過にかかる時間 #define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break; //交差点を渡る task main() { SetSensorLight(S1); //光センサーをセット SetSensorLowspeed(S4); //超音波センサーをセット int nOnline=0; //黒い線になった回数 int nCrossline=0; //交差点を渡った回数 while (true) { go_Fwd(OUT_BC); //黒線になるまで前進 until(SENSOR_1 = 1); while (nOnline < nMAX) { //黒の認識が最大値より小さい間 if(SensorUS(S4) <= 8) { //8cm以内に障害物があった場合下記2行を実行する OnFwd(OUT_A,70);Wait(500);Off(OUT_A); // Wait(2000); //アームを前方向に2秒回転(ボールをつかむ) } if(nCrossline >= 5) { //交差点を5回通過した場合 OnRev(OUT_A,100);Wait(1000);Off(OUT_A); break; //アームを後方向に1秒回転(ボールを放つ) } if (SENSOR_1 < THRESHOLD -11) { //白の場合 turn_left1; //左に旋回 nCrossline++; //交差点を渡る回数を増やす } else { if (SENSOR_1 < THRESHOLD-5) { //やや白の場合 turn_left0; //左に曲がる } else if (SENSOR_1 < THRESHOLD+5) { //やや黒の場合 go_forward; //直進 } else if (SENSOR_1 < THRESHOLD +11) { //黒の場合 turn_right0; //右に曲がる } else { turn_right1; //右に旋回 } nOnline=0; //カウントをリセットする } Wait(STEP); //(1/1000秒待機) } short_break; //小休止 turn_right1; Wait(nMAX*STEP); //進行方向修正 cross_line; //交差点を渡る nOnline=0; //カウントをリセットする } } ** 反省と感想 [#a4021e1b] 難しかった。しきい値が安定しなかった。