上の図のいずれかの経路を黒い線にそって動くロボットを作成する。
自分はC地点からA地点へ行くロボットを作成した。
その場合、Q地点で直進しP地点で右折することになる。
各交差点では二秒間停止する。
#define aida 45 // しきい値 #define kuro 40 // 線の真ん中より少し大きい値 int Cmax=5; int C=0; int kabu=0;
task main () { SetSensor(SENSOR_2,SENSOR_LIGHT); while (kabu<=2) //kabuのカウンタが2以下の間 { { while (C<=Cmax) //CのカウンタがCmax以下の間 { if (SENSOR_2<=kuro) //線の真ん中にいるとき左に動く { OnFwd(OUT_C); Off(OUT_A); C=0; //Cのカウンタを0にする } if (SENSOR_2>=kuro) //線の真ん中にいないとき { if(SENSOR_2<=aida) //線の上の外側にいるとき右に動く { OnFwd(OUT_A); Off(OUT_C); C=0; //Cのカウンタを0にする } if(SENSOR_2>=aida) //白いとこにいるとき右旋回 { OnFwd(OUT_A); OnRev(OUT_C); C+=1; //Cのカウンタを1増やす } } } while (C>=Cmax) //CのカウンタがCmaxより大きい間(交差点と判断したとき) { PlaySound(SOUND_CLICK); C=0; Cmax+=3; Off(OUT_A); Off(OUT_C); Wait(200); kabu+=1; } } } }
自分がC地点からA地点にいくとわかっているから動けるプログラムなので、ほかの経路を渡ることはできないのでどんな経路をも通ることができるプログラミングにするべきだった。
工夫は交差点と認識したとき音を鳴らすことによってロボットが何をやっているかわかりやすくなった。
今回は二つ目の課題だったが前回と比べるとプログラムを作るのが難しいと思った。
また今回もロボットを一から作ろうとしたが、なかなか完成することができずにプログラミングに割く時間が少なくなってしまった。
光センサーを使い線の上を動くとこを初めてみたので驚きたのしむことができた。
次の課題は6人でやるので協力して頑張りたいと思う。