*目次 [#b84f380e]
#contents
*課題の確認 [#d9ec4096]
**黒い線に沿って動くロボット [#f319c09e]
''各チームで作成したコースを1周するロボットを製作せよ。交差点以外のコース上に350mlの空の空き缶を2個以上おき、&br;空き缶にぶつかった時には次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する)''

1空き缶をコース上に戻して再びコースに戻って進む。

2空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに沿って進む。

3奇数回目に空き缶に遭遇したら、その場で反転して進み、偶数回目に遭遇したら、空き缶を押しのけて進む。

ただし、

・速さと正確さを追求すること&br;
・コースを1周したら自動的に止まること&br;
・交差点では一時停止すること&br;
*ロボット [#tcc3cf6b]
**ロボットの全体図 [#j967bb24]
**工夫したところ [#tbfa01b3]
**苦労したところ [#vb618b56]
*コース [#x2c825c2]
*プログラム [#s5045e3d]
**としぞうのプログラム [#va95d00f]
課題の1のプログラムです。
 #define  turn_L OnFwd(OUT_C);OnRev(OUT_A);Wait(180);Off(OUT_A+OUT_C);   //左に回転
 #define  turn_R OnFwd(OUT_A);OnRev(OUT_C);Wait(180);Off(OUT_A+OUT_C);   //右に回転
 task main ()
 {
   SetSensor ( SENSOR_1, SENSOR_LIGHT );
   SetSensor ( SENSOR_2, SENSOR_TOUCH );
   SetSensor ( SENSOR_3, SENSOR_LIGHT );
   int flag=0;     //flag初期値を0に設定
   
   while(flag<8){   //交差点を8回通過
                  
         
       if ((SENSOR_1>40)&&(SENSOR_3>40))
           {
               OnFwd(OUT_A+OUT_C);    
           }        //センサー1とセンサー3が白のとき直進    
       if((SENSOR_1<40)&&(SENSOR_3>40))
           {    
               OnRev(OUT_A);
               OnFwd(OUT_C);        
           }    //センサー1が黒でセンサー3が白のとき左に回転
        if((SENSOR_1>40)&&(SENSOR_3<40))
           {
               OnRev(OUT_C);
               OnFwd(OUT_A);
           }    //センサー1が白でセンサー3が黒のとき右に回転
        if((SENSOR_1<40)&&(SENSOR_3<40))
           {
               Off(OUT_A+OUT_C);
               Wait(100);
               OnFwd(OUT_A+OUT_C);
               flag++;
           }    //両方のセンサーが黒のときflagに1を足して直進
        if (SENSOR_2==1)  //タッチセンサーに触れた場合
           {
                                         
               OnRev(OUT_A+OUT_C);Wait(10);Off(OUT_A+OUT_C);   //後ろに下がる
               turn_L;                                         //左に回転
               OnFwd(OUT_A+OUT_C);Wait(50);Off(OUT_A+OUT_C);  //缶を前に押す
               OnRev(OUT_A+OUT_C);Wait(100);Off(OUT_A+OUT_C);      //後ろに下がる
               turn_R;                                            //右に回転                         
           }         
   
 }
 Off(OUT_A+OUT_C);   //終了
 }

**マキロンのプログラム [#k7ad7ef6]
課題の2のプログラムです。
 #define a OnFwd(OUT_A);
 #define c OnFwd(OUT_C);
 #define b OnRev(OUT_A+OUT_C);
 sub linetrace(){//
	if (SENSOR_1<40) {Off(OUT_A);}else{a;}
	if (SENSOR_3<40) {Off(OUT_C);}else{c;}
	if ((SENSOR_1<40)&&(SENSOR_3<40)){a;c;}
	Wait(10);
 }
 task main (){
	SetSensor(SENSOR_1,SENSOR_LIGHT);
	SetSensor(SENSOR_2,SENSOR_TOUCH);
	SetSensor(SENSOR_3,SENSOR_LIGHT);
	ClearTimer(0);
 repeat(6) {
	while ((SENSOR_1>40)||(SENSOR_2==0)||(SENSOR_3>40)){
	linetrace();
	}
	while ((SENSOR_1>40)||(SENSOR_3>40)){
	linetrace();
	}
	Wait(160);b;a;Wait(200);b;c;Wait(200);b;Wait(20);a;c;
 }
	Off(OUT_A+OUT_C);
 }


*まとめ・反省 [#i025f22c]
**としぞう [#k7c9b373]
**マキロン [#aae9c931]
*コメント [#y69f2e2e]
コメントをどうぞ!
#comment

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