目次 今回の課題 †
メンバー紹介 †風魔tk D ロボット †全体 †小回りが利くようにロボットは小さめに作りました。 後ろに補助輪を付け、安定させました。 光センサー †発射台 †正面 †だるま落としのイメージです。ホイールを打ち出すと、上のホイールが落ちてそのまま装てんされます。 上面 †ホイールの弾道を安定させるためにブロックでバレルを作りました。 側面 †大きいギアから小さいギアへと回転するので、速く回り、勢いよくホイールを打ち出せるようにしました。
プログラム †風魔tk †#define TURN_TIME 300 //時間を3秒間とした task main () { int light_max=0; int t_max=0; SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサーを1にセット SetPower(OUT_B,5); //投擲モーターの出力5 ClearTimer(0); //タイマーリセット OnFwd(OUT_A);OnRev(OUT_C); //3秒間回る while(FastTimer(0)<TURN_TIME){ if(SENSOR_1>light_max){ light_max=SENSOR_1; //以前よりも明るい場所があった場合その場所を記録 t_max=FastTimer(0); } OnFwd(OUT_C);OnRev(OUT_A); Wait(TURN_TIME-t_max); //最も明るかった場所まで戻る Off(OUT_A+OUT_C);} OnFwd(OUT_B); //ブロックを投げる Wait(9); Off(OUT_B); } D †(2)懐中電灯に向かって進み、一定の距離まで近づいて、懐中電灯を狙ってブロックを投げる #define THRESHOLD 40// int lmax=0; int tmax=0;//最大値を実現する時刻 tmax=FirstTimer(0); sub discover(){ //サブルーチン 光の最大値を見つける ClearTimer(0); OnFwd(OUT_A);OnRev(OUT_C); while(FirstTimer(0)<800){ if(SENSOR_1>lmax){ lmax=SENSOR_1;{ Wait(5);} OnFwd(OUT_C);OnRev(OUT_A); Wait(800- tmax); Off(OUT_A+OUT_C); } } task main(){ SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); discover(); ClearTimer(1);//タイマーのリセット while(Timer(1)<100){ if((SENSOR_1> THRESHOLD)&&(SENSOR_3> THRESHOLD)){ OnFwd(OUT_A+OUT_C);Wait(); }//センサー1、3がどちらも明るいとき、直進 if((SENSOR_1> THRESHOLD)&&(SENSOR_3< THRESHOLD)){ OnFwd(OUT_C);OnRev(OUT_A);Wait(); }//センサー1が明るく、3が暗いとき、左回転 if((SENSOR_1< THRESHOLD)&&(SENSOR_3> THRESHOLD)){ OnFwd(OUT_A);OnRev(OUT_C); }//センサー1が暗く、3が明るいとき、右回転 if((SENSOR_1< THRESHOLD)&&(SENSOR_3< THRESHOLD)){ discover(); }//センサー1、3がどちらも暗いとき、光を見つける if((SENSOR_1>60)&&(SENSOR_3>60)){ Off(OUT_A+OUT_C); OnFwd(OUT_B);Wait(8);Off(OUT_B); }//光に30cmまで近づいたとき、停止してブロックをとばす } 工夫した点、苦労した点 †風魔tk †一番明るいところを見つけるプログラムを作るところまでは比較的簡単だったが、二番目に明るいところを見つけるプログラムを作れずに終わってしまった。 D †はじめは勢いが足りず、ホイールがうまく飛ばなかったので、ギア比を調整して、速く回転するようにした。ホイールを打ち出す角度も何度も試行錯誤して自由に変えられるものにした。 感想 †風魔tk †他の課題に比べ時間が圧倒的に短く、短い時間で完成までもっていくのがとても大変だった。 D †どうやってホイールをとばすか悩んだ。時間があればもっと工夫したかった。 コメント †コメントをどうぞ!
|