[[2015a/Member]] 課題 半径1m以内にある空き缶を探して、25cmの距離からボールを転がしてその空き缶に当てる。ただし25cm以内に空き缶がある場合には、30cmまで離れること。 半径1m以内にある懐中電灯を探して、25cmの距離からボールを転がしてその懐中電灯に当てる。ただし25cm以内に懐中電灯がある場合には、30cmまで離れること。 ロボットの説明 #ref(2015a/Member/Ryota35/Mission3/rob3.jpg,20%,ロボ3) #ref(2015a/Member/Ryota35/Mission3/rob4.jpg,20%,ロボ4) 基本は課題2と同じである。 センサーの設置場所を変えた。 プログラム 1回転する中で光の最大値を探しその後逆回転してその場所をむき、その場所を見つけアームを上げて目標に向かってシュートするようにプログラムをした。 task main(){ SetSensor(SENSOR_2,SENSOR_LIGHT); int t = 0; int T = 0; int MAX = 0; //仮の最大値 int i = 0; while(1){ t = FastTimer(0); //懐中電灯を探す if(t < 150){ //回転 OnFwd(OUT_A); OnRev(OUT_C); if(SENSOR_2 > MAX){ MAX = SENSOR_2; T = FastTimer(0); } }else{ if(i == 2){ PlaySound(SOUND_UP); Off(OUT_AC); Wait(20); OnFwd(OUT_C); OnRev(OUT_A); Wait(150 - T); Off(OUT_AC); OnFwd(OUT_B); Wait(100); OnRev(OUT_AC); Off(OUT_B); Wait(50); Off(OUT_ABC); Wait(9999); }else{ PlaySound(SOUND_UP); Off(OUT_AC); Wait(20); OnFwd(OUT_C); OnRev(OUT_A); Wait(150 - T); OnRev(OUT_AC); Wait(100); Off(OUT_AC); Wait(20); ClearTimer(0); //リセット t = 0; T = 0; MAX = 0; i++; } } } } 感想 プログラムがうまくいかない時は意外と単純な凡ミスだったりした。 単純なミスを減らすためにも細かいところまでの確認が必要だ。