[[2017a/Member]]
#contents
*課題について [#a519caec]
#ref(./2017a-mission2.png,80%,課題)
**右折ルート [#y0d1034e]
*ロボットについて [#je0a9760]
*プログラムについて [#g50bed2d]
**defineとsubrutine [#c6aa0b20]
***define [#j5028005]
 #define white 50
色について定義する。
 #define white 50                 //白色

 #define white_gray 48
 #define white_gray 48       //白灰色

 #define gray 40
 #define gray 40                  //灰色

 #define black_gray 37
 #define black_gray 37            //黒灰色

 #define black 35
 #define black 35                 //黒色

#define go_forward OnFwd(OUT_AC);
#define turn_left0 Off(OUT_A);OnFwd(OUT_C);
#define turn_left1 OnRev(OUT_A);OnFwd(OUT_C);
#define turn_right0 Off(OUT_C);OnFwd(OUT_A);
#define turn_right1 OnRev(OUT_C);OnFwd(OUT_A);
簡単な動きについて定義する。
 #define go_forward OnFwd(OUT_AC);                 //直進する

 #define turn_left0 Off(OUT_A);OnFwd(OUT_C);       //左旋回する

 #define turn_left1 OnRev(OUT_A);OnFwd(OUT_C);     //左回転する

 #define turn_right0 Off(OUT_C);OnFwd(OUT_A);      //右旋回する

 #define turn_right1 OnRev(OUT_C);OnFwd(OUT_A);    //右回転する


***subrutine [#x123b074]
sub walk_right()
{
  ClearTimer(0);
&nbsp;while(FastTimer(0)<15)
&nbsp; if(SENSOR_2>white_gray){
&nbsp;turn_left1;
&nbsp;&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>gray){
&nbsp;turn_left0;
&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>black_gray){
&nbsp;go_forward;
&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>black){
&nbsp;turn_right0;
&nbsp; ClearTimer(0);
}
&nbsp;else{
&nbsp;turn_right1;
}
Off(OUT_AC);
}
 sub walk_right()
 {
 ClearTimer(0);
 while(FastTimer(0)<15)
 if(SENSOR_2>white_gray){
 turn_left1;
 ClearTimer(0);
 }
 else if(SENSOR_2>gray){
 turn_left0;
 ClearTimer(0);
 }
 else if(SENSOR_2>black_gray){
 go_forward;
 ClearTimer(0);
 }
 else if(SENSOR_2>black){
 turn_right0;
 ClearTimer(0);
 }
 else{
 turn_right1;
 }
 Off(OUT_AC);
 }

sub walk_left()
{
&nbsp; ClearTimer(0);
&nbsp;while(FastTimer(0)<15)
&nbsp; if(SENSOR_2>white_gray){
&nbsp;turn_right1;
&nbsp;&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>gray){
&nbsp;turn_right0;
&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>black_gray){
&nbsp;go_forward;
&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>black){
&nbsp;turn_left0;
&nbsp; ClearTimer(0);
}
&nbsp;else{
&nbsp;turn_left1;
}
Off(OUT_AC);
}
 sub walk_left()
 {
 ClearTimer(0);
 while(FastTimer(0)<15)
 if(SENSOR_2>white_gray){
 turn_right1;
 ClearTimer(0);
 }
 else if(SENSOR_2>gray){
 turn_right0;
 ClearTimer(0);
 }
 else if(SENSOR_2>black_gray){
 go_forward;
 ClearTimer(0);
 }
 else if(SENSOR_2>black){
 turn_left0;
 ClearTimer(0);
 }
 else{
 turn_left1;
 }
 Off(OUT_AC);
 }

task main()
{
&nbsp;&nbsp; SetSensor(SENSOR_2,SENSOR_LIGHT);
 task main()
 {
   SetSensor(SENSOR_2,SENSOR_LIGHT);

walk_right();
PlaySound(SOUND_UP);
&nbsp; OnFwd(OUT_AC);
&nbsp; Wait(30);
&nbsp; Off(OUT_AC);
 walk_right();
 PlaySound(SOUND_UP);
 OnFwd(OUT_AC);
 Wait(30);
 Off(OUT_AC); 

walk_left();
PlaySound(SOUND_DOWN);
Wait(100);
OnFwd(OUT_C);
Wait(150);
&nbsp; Off(OUT_AC);
 walk_left();
 PlaySound(SOUND_DOWN);
 Wait(100);
 OnFwd(OUT_C);
 Wait(150);
 Off(OUT_AC); 

walk_left();
PlaySound(SOUND_UP);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
 walk_left();
 PlaySound(SOUND_UP);
 OnFwd(OUT_AC);
 Wait(50);
 Off(OUT_AC); 

walk_left();
Off(OUT_AC);
PlaySound(SOUND_UP);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
 walk_left();
 Off(OUT_AC);
 PlaySound(SOUND_UP);
 OnFwd(OUT_AC);
 Wait(50);
 Off(OUT_AC);

walk_right();
PlaySound(SOUND_DOWN);
Wait(100);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
 walk_right();
 PlaySound(SOUND_DOWN);
 Wait(100);
 OnFwd(OUT_AC);
 Wait(50);
 Off(OUT_AC); 

walk_right();
PlaySound(SOUND_DOWN);
Wait(100);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
 walk_right();
 PlaySound(SOUND_DOWN);
 Wait(100);
 OnFwd(OUT_AC);
 Wait(50);
 Off(OUT_AC); 

walk_right();
PlaySound(SOUND_UP);
OnFwd(OUT_A);
Wait(280);
Off(OUT_AC);
 walk_right();
 PlaySound(SOUND_UP);
 OnFwd(OUT_A);
 Wait(280);
 Off(OUT_AC);

&nbsp;ClearTimer(0);
&nbsp;while(FastTimer(0)<30)
&nbsp; if(SENSOR_2>white_gray){
&nbsp;turn_left1;
&nbsp;&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>gray){
&nbsp;turn_left0;
&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>black_gray){
&nbsp;go_forward;
&nbsp; ClearTimer(0);
}
&nbsp; else if(SENSOR_2>black){
&nbsp;turn_right0;
&nbsp; ClearTimer(0);
}
&nbsp;else{
&nbsp;turn_right1;
}
Off(OUT_AC);
OnFwd(OUT_A);
Wait(270);
walk_right();
PlaySound(SOUND_UP);
&nbsp; OnFwd(OUT_AC);
&nbsp; Wait(30);
&nbsp; Off(OUT_AC);
 ClearTimer(0);
 while(FastTimer(0)<30)
 if(SENSOR_2>white_gray){
 turn_left1;
 ClearTimer(0);
 }
 else if(SENSOR_2>gray){
 turn_left0;
 ClearTimer(0);
 }
 else if(SENSOR_2>black_gray){
 go_forward;
 ClearTimer(0);
 }
 else if(SENSOR_2>black){
 turn_right0;
 ClearTimer(0);
 }
 else{
 turn_right1;
 }
 Off(OUT_AC);
 OnFwd(OUT_A);
 Wait(270);
 walk_right();
 PlaySound(SOUND_UP);
 OnFwd(OUT_AC);
 Wait(30);
 Off(OUT_AC); 

walk_left();
PlaySound(SOUND_DOWN);
Wait(100);
OnFwd(OUT_C);
Wait(150);
&nbsp; Off(OUT_AC);
 walk_left();
 PlaySound(SOUND_DOWN);
 Wait(100);
 OnFwd(OUT_C);
 Wait(150);
 Off(OUT_AC); 

walk_left();
PlaySound(SOUND_UP);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
 walk_left();
 PlaySound(SOUND_UP);
 OnFwd(OUT_AC);
 Wait(50);
 Off(OUT_AC);

walk_left();
PlaySound(SOUND_UP);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
 walk_left();
 PlaySound(SOUND_UP);
 OnFwd(OUT_AC);
 Wait(50);
 Off(OUT_AC);

walk_right();
PlaySound(SOUND_UP);
OnFwd(OUT_A);
Wait(280);
Off(OUT_AC);
 walk_right();
 PlaySound(SOUND_UP);
 OnFwd(OUT_A);
 Wait(280);
 Off(OUT_AC);

walk_right();
PlaySound(SOUND_DOWN);
}
 walk_right();
 PlaySound(SOUND_DOWN);
 }



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