#contents *課題 [#l19b9758] 半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作することが課題。 *ロボットの説明 [#g3a81ab1] #ref(./IMG_1325.JPG) 課題2の時とほとんど一緒で車型の本体にツメのついたかごが前方にあるロボットである。 ボールをかごに入れ、回り続けるツメでつかむことでボールを運ぶ。 この時ボールをつかんでもツメは回り続けているので、モーターに負荷をかけないようにギアを輪ゴムにしている。 課題2と違う点はライトセンサーが前方についている点だけである。 *プログラム [#je731d4c] #define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右旋回 #define turn_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回 #define MOVE_TIME 360 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //端子1にライトセンサー int timemax=0; //最も明るいところの時間を記憶する変数 int lightmax=0; //最も明るいところのセンサーの値を記憶する変数 ClearTimer(0); turn_right; while(FastTimer(0)<MOVE_TIME){ //1回転する間、 if(SENSOR_1>lightmax){ //センサーの最高値を超えたら、 lightmax=SENSOR_1; //明るさの変数を更新し、 timemax=FastTimer(0); //時間の変数も更新する } } Off(OUT_AC); turn_left; Wait(MOVE_TIME-timemax); //最も明るいところまで左旋回で戻る Off(OUT_AC); OnRev(OUT_B); //ツメを上げて Wait(100); Off(OUT_B); OnFwd(OUT_AC); //シュートする Wait(100); Off(OUT_AC); } 1回転させてセンサーの値が高くなったところを記録していき、最も明るいところを認識し、時間を記録するようになっている。 逆回転で戻ることで回転の誤差を減らしている。 * [#cfc14acd] *まとめ [#m272a313] 光をしっかりと感じ取って、最も明るい場所を認識させることができた。 特に問題点もなく、ほぼ100%成功したので良くできたと思う。