[[2008a/MemberOnly/進行状況A]] *目次 [#oc70f701] #contents *課題 [#v2854fdb] 懐中電灯に向かってブロックを投げるロボ *ロボットの説明 [#r34040d4] &ref(080703_1727~01[1].JPG); 上から見たロボットの全体図です。 &ref(080703_1727~02[1].JPG); ブロックを投げる機構です。単純にモーターが回転して飛ばすようになっています *テンシャルギアについて [#p42a5df3] &ref(080703_1728~01[1].JPG); 今回のロボットはテンシャルギアを使いました。テンシャルギアとは左右のギアの数を偶数と奇数に分けることで、一つのモーターで左右のタイヤを動かす機構のことです。 *プログラムについて [#f6246dda] プログラム 課題1、全方向から懐中電灯を探し、ブロックを投げるプログラム [#q23f7d9a] #define around 40 //ロボが回る時間です #define THROW 20 //投げる時間です task main(){ int max=0,jikan=0; SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(0); OnFwd(OUT_C); while(Timer(0)<=around){ //一周して最も光の強いところを探します if(max<SENSOR_1){ max=SENSOR_1; jikan=Timer(0); } } Off(OUT_C); Wait(50); OnFwd(OUT_C); Wait((jikan*10)); //その方向を向きます Off(OUT_C); OnRev(OUT_A); Wait(THROW); //投げます Off(OUT_A); } 課題2、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。 #define THRESHOLD 60 //閾値 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーに定義する SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーに定義する while(true){ if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) { //センサー1と3 が受ける光が閾値より強ければ前進 OnRev(OUT_C); Wait(15); OnFwd(OUT_C); Wait(15); OnFwd(OUT_A);Wait(15); //ブロックを投げる } if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) { //センサ-3が受 ける光が暗くなったら左折 OnRev(OUT_C); Off(OUT_A); } if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) { //センサ-1が受 ける光が暗くなったら右折 OnFwd(OUT_C); Off (OUT_A); } if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) { //光がなければ 時計回りに回転 OnFwd(OUT_C); Off(OUT_A); } } } Off(OUT_A+OUT_C); } *苦労、工夫した点 [#nc3895bc] はじめはディファレンシャルギアの仕組みがよくわからず、ヒントを頼りになんとか作ってみました。 またブロックを飛ばす装置も、はじめからバッティングマシンのようなものに決めていましたが、 なかなかうまく飛ばず、ブロックを抱え込むようにして、安定させて、飛ばすことにしました。 *問題点 [#rcdf6b33] ブロックを飛ばすときに、どうしても回りすぎて、ブロックがうまく飛ばず、マシンが壊れてしまった。 *解決策 [#daf848e7] 投げる装置をかえて、また飛ばす時間を制限することで、壊れず投げれるようになりました。 *感想 [#d76af606] さすがに1週間はきつく感じました。 *コメントをどうぞ [#dd55719f] #comment 1回目~ 課題1では最も明るい方向を求めてください。~ 今のままでは、光の強さが最大でなくともある程度以上強い方向を初めて向いたときにも投げてしまうおそれがあります。~ 変数を使うと良いと思います。~ プログラムだけでも良いので、課題を3つともやって見てください。I~ 2回目~ ロボットの説明を詳しくしてください。~ 写真がもうなければ、文でもよいです。例えば、何故三輪車にしたのか、キャスターにしたのか等 1.ロボットの説明を詳しくしてください。~ 写真がもうなければ、今ある写真に書き込みをいれたり、文でもよいです。~ 例えば、何故三輪車にしたのか、キャスターにしたのか、ディファレンシャル・ギアの詳しい仕組み等書けることはけっこうあります。~ 2.できるだけ、プログラムを3つ作ってください。~ わからない点があれば、過去のホームページを参考にしてください。~