[[2008a/A10/課題3右]]
*目次 [#d38a03e1]
#contents
*課題3:光を追いかけるロボット [#w5bbb5bc]
**課題 [#ra0a3f4b]
インストの「top secret」を参考にして、白いホイールを投げるロボットを作成し、以下の動きをするようにプログラムを作成せよ。
(重複しないように一人一つ以上のプログラムを作成すること)

1 全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 

2 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。 

3 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば50cmの距離まで近づいてブロックを投げる。
**条件 [#ab1aa0a3]
モーター、光センサー、タッチセンサーはそれぞれ2個まで使用可。
*マシンの紹介 [#w2a19f8e]
**課題・条件[#tdd460b5]
モーターが2個までしか使えないので走らせるので1個、ブロックを投げさせるために1個使う、計2個でいくことにした
***タイヤ [#t0f58c3a]
#ref(2008a/A10/課題3右/2.jpg,100%,全体)
1個のモーターでタイヤを回すためのものである
***光センサー [#ye1ba4f3]
#ref(2008a/A10/課題3右/1.jpg,100%,全体)
光をさがすためにも間隔を大きくあけた
***ブロックを投げる部分 [#tefe84d6]
#ref(2008a/A10/課題3右/3.jpg,100%,全体)
上から振り下ろすようにして物を投げるようにした
*プログラム [#vfec59cf]
ここのチームは3人なので1人1つプログラムを担当するようにした

1 全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 水上担当

2 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。 辻担当

3 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば50cmの距離まで近づいてブロックを投げる。 吉村担当
**1 回転して最も明るい場所にブロックを投擲するプログラム [#l246bdc6]
 #define THRESHOLD 70  //光の明るさを定義する
 task  main()
 {SetSensor(SENSOR_1,SENSOR_LIGHT);  //光センサーを定義
 while(true)
 {if(SENSOR_1<THRESHOLD)  //定義した光よりも暗い場合
 {OnFwd(OUT_A);  //左タイヤを回転させる
 }
 else  //定義した光よりも明るい場合
 {Off(OUT_A);  //タイヤ停止
 OnFwd(OUT_C);  //ブロックを投げる
 Wait(5);
 Off(OUT_C);}  //終了
 }
 }

**2 光を動かしたとき光に向かって進み、光の動きを止めればブロックを投げるプログラム [#x8b1e840]
 #define THRESHOLD 65   //光の明るさを定義する
 task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーの定義する
 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーの定義する  
 SetPower(OUT_A,7); //モーターの出力を7にする
 while(true){
  if(SENSOR_1 > THRESHOLD){    
    OnFwd(OUT_A);             //左に光が強いとき左に回る
  }
  if(SENSOR_1 < THRESHOLD){
    OnRev(OUT_A);       //右に光が強いとき右に回る
  }
  if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) {
    Off(OUT_A);
    OnFwd(OUT_C);
    Wait(20);
    Off(OUT_C);       //左右のセンサーが明るさの定義値より強い明るさのとき物を投げる
  }
  if((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) {
    OnFwd(OUT_A);
  }         //左右のセンサーに光があたっていないとき回転して光をさがす
 }
 }
**プログラム3 [#v465ae07]
 #define THRESHOLD  45
 #define RUN_TIME  600
 task main ()
  {
       SetSensor(SENSOR_1,SENSOR_LIGHT);
       SetSensor(SENSOR_3,SENSOR_LIGHT);
       SetPower(OUT_C,7);
       SetPower(OUT_A,7);
 ClearTimer(0);
    while(FastTimer(0) <= RUN_TIME){
     if(SENSOR_1 > THRESHOLD){
                      if(SENSOR_3 > THRESHOLD){
                            OnFwd(OUT_A);
                            Wait(30);
                            OnRev(OUT_A);
                            Wait(65);
                     } else {
                        OnFwd(OUT_A);
                          }
                     } else {
                        if(SENSOR_3 > THRESHOLD){ 
                        OnRev(OUT_A);
                           }else{
                               Off(OUT_A);
                          }                    
              }
      }
           OnFwd(OUT_C);
           Wait(80);
           Off(OUT_C);
}
*苦労・工夫したところ [#lbd9af4b]
・とりあえず走らせてみようとして走らせてはみたものの全然前に走ってくれなかったこと
*今後の課題・反省 [#w1081322]
・みんなの都合が合わなくて集まることがあまりないまま1週間迎えてしまった

・プログラムの意味を理解しながらやればかなりはやくプログラムを組めたと思う
*感想 [#hf87e862]
・やはり1週間は短すぎる気がした。チーム全員で集まることができる日が少ないのをなんとかしたいと思った。 by 辻
*この作品に関してのコメント [#j2847f4e]
コメントよろしくお願いします
#comment
訪問者
本日&counter(today);
昨日&counter(yesterday);
合計&counter(all);

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS