*目次 [#ja673cce]
#contents課題
#contentsプログラム
目次
#contents

*課題 [#t9d706e9]
1.スタート地点から出発し、黒い線にそって動く。~
2.一つ目の十字の交差点と二つめの十字の交差点の間に置かれたピンポン玉をつかむ。~
3.さらに黒線に沿って動いてゴール地点を目指す。~
4.ゴールに向けてピンポン玉をシュートする。~
*ロボット本体 [#hdd958bd]
&ref(robo-01.jpg);
&ref(robo-02.jpg);
&ref(robo-03.jpg);~
ロボットとの前にタイヤをつけ、ピンポン玉を飛ばせるようにした

*プログラム [#g5e0b9ce]
 #define HIPOWER 4
 #define LOWPOWER 2
 #define set_power_H SetPower(OUT_AC,HIPOWER);
 #define set_power_L SetPower(OUT_AC,LOWPOWER);
 #define GF set_power_H; OnFwd(OUT_AC);
 #define TL1 set_power_L;\
 OnFwd(OUT_C); OnRev(OUT_A);
 #define TL0 set_power_L;\
 OnFwd(OUT_C); Off(OUT_A);
 #define TR0 set_power_L;\
 OnFwd(OUT_A); Off(OUT_C);
 #define TR1 set_power_L;\
 OnFwd(OUT_A); OnRev(OUT_C);
 #define CR set_power_H; OnFwd(OUT_AC);Wait(20); 

 task main()
 {
 SetSensor(SENSOR_2,SENSOR_LIGHT);
 int nl=0; //nlは黒線の上を通った回数
 int x=0; //xは交差点を判断し、渡った回数

 OnFwd(OUT_B);


 while (true) {

 while (nl < 5){
   if (SENSOR_2 < 37) {
     TL1;
      nl++;
   } else if (SENSOR_2 < 39) {
     TL0;   
 nl=0;
   } else if (SENSOR_2 < 45) {
     GF;   
 nl=0;
   } else if (SENSOR_2 < 47) {
     TR0;  
   } else {
     TR1; 
 nl=0;
   }

   Wait(1);
 }
   while(x < 4){
   TR1; Wait(35);
   CR;
   x++;
 if (SENSOR_2 < 43){
  nl=0;
 } else {
 OnRev(OUT_AC);
 Wait(30);
   TL1;
 Wait(42); 
 OnFwd(OUT_AC);
 until(SENSOR_2 < 42);

 nl=0;
 }
 Off(OUT_AC);
 OnRev(OUT_B);
 }
 }
 }


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