*課題3 [#jeb18486] #contents *課題 [#l8f812ae] 光を認識してその場所にボールを放出するロボットの作成 *工夫した点 [#bb547fc4] **ボールをつかむのにタイヤを付ける [#s3c8609a] ボールを安定して放出したりキャッチ出来るようにタイヤを取り付けた。その周りにボールを入れるスペースを作ることでボールをしっかりキープして放出する時のためにスペースを程よい大きさにしてぎりぎりタイヤにあたるようにした。 #ref(./IMG_1104.JPG,30%) **モーターを安定させる [#a8820095] モーターの下にブロックを付けることでモーターが動いたときにモーターが移動しないようにした。 #ref(./IMG_1103.JPG,30%) **プログラム [#xec66787] プログラムではタイマーを2つ使い1つは回転する時間を決めてそれまで時間を計測するので、2つ目は光源から時間を測り回転し終えたときにその値をintに代入してそこから逆回転するものである。 #define spin OnFwd(OUT_A);OnRev(OUT_C);//回転 #define reverse OnRev(OUT_A);OnFwd(OUT_C);逆回転 int runtime=500;//回転して光源を探す時間 task main() { spin; SetSensor(SENSOR_2,SENSOR_LIGHT);//センサーを付ける int slight = 0; ClearTimer(0);//タイマーをリセット ClearTimer(1);//タイマーをリセット OnRev(OUT_B);//球をキャッチ while(runtime>FastTimer(0)) { if(slight<SENSOR_2)//光の強さを比較して大きかったら値を変える {slight = SENSOR_2; ClearTimer(1);}//時間をリセットする } reverse; int spin_time=FastTimer(1);//光からの時間を代入する Wait(spin_time);//光源まで戻す Off(OUT_AC); OnFwd(OUT_B); } task main(){ spin; SetSensor(SENSOR_2,SENSOR_LIGHT);//センサーを付ける int slight = 0; ClearTimer(0);//タイマーをリセット ClearTimer(1);//タイマーをリセット OnRev(OUT_B);//球をキャッチ while(runtime>FastTimer(0)){ if(slight<SENSOR_2){//光の強さを比較して大きかったら値を変える slight = SENSOR_2; ClearTimer(1); }//時間をリセットする } reverse; int spin_time=FastTimer(1);//光からの時間を代入する Wait(spin_time);//光源まで戻す Off(OUT_AC); OnFwd(OUT_B); } *感想 [#q5404bb9] 慣れてきたのか作るのがだんだん速くなってきて今回制作したロボットは割と早く終わった。次が最後なので頑張っていいものを作りたい。