[[2019a/Member]]

*課題 [#z632fddf]
課題については[[2019a/Mission2]]を参照。

私はAを出発しMでシュートをする方のプログラミングを試みた。
*ロボットについて [#xe9271e7]
センサーの近くにアームをつけると影になってしまい、光の当たり方でロボットの動きが大きく変わってしまうので前後に分けて付けることにした。
* [#d3cf433c]
AからDまでは線の左側をトレース
*プログラミング [#ze0538ab]
はじめに、defineを用い、右折を定義した。

そして、黒と白の境界をトレースさせるためのプログラムをサブルーチンで定義した。

センサーが黒色を感知している長さで動きを変化させるため、fasttimerとその時間を決めるためにグローバル変数を用いた。
  #define t_r OnFwd(OUT_A);OnRev(OUT_C);Wait(60);Off(OUT_AC);ClearTimer(0);//90度 右折
  int s;                                                                   //グローバル変数
  sub follow_line_left()                                                   //線の左側のトレース
  {
  while(FastTimer(0)<s)
  {
   if(SENSOR_2>42){OnFwd(OUT_A);OnRev(OUT_C);ClearTimer(0);}
   else if(SENSOR_2>40){OnFwd(OUT_A);ClearTimer(0);}
   else if(SENSOR_2>36){OnFwd(OUT_AC);ClearTimer(0);}
   else if(SENSOR_2>34){OnFwd(OUT_C);ClearTimer(0);}
   else{OnFwd(OUT_C);OnRev(OUT_A);}
  }
  }
  sub follow_line_right(){
  while(FastTimer(0)<s)
   {
   if(SENSOR_2>42){OnFwd(OUT_C);OnRev(OUT_A);ClearTimer(0);}
   else if(SENSOR_2>40){OnFwd(OUT_C);ClearTimer(0);}
   else if(SENSOR_2>36){OnFwd(OUT_AC);ClearTimer(0);}
   else if(SENSOR_2>34){OnFwd(OUT_A);ClearTimer(0);}
   else{OnFwd(OUT_A);OnRev(OUT_C);}
  }
  }
  sub cross_line(){
  Off(OUT_AC);Wait(100);
  OnFwd(OUT_AC);Wait(20);
  ClearTimer(0);
  }
A~D
  task main()
  {
  s=22;
  SetSensor(SENSOR_2,SENSOR_LIGHT);
  ClearTimer(0);
  follow_line_left();
  Off(OUT_AC);Wait(100);
  OnFwd(OUT_A);OnRev(OUT_C);Wait(40);
  OnFwd(OUT_AC);Wait(20);
  ClearTimer(0);
D~G
  s=24;
  follow_line_right();
  Off(OUT_AC);Wait(50);
  OnFwd(OUT_AC);Wait(30);
  t_r
  follow_line_right();
  Off(OUT_AC);Wait(50);
  OnFwd(OUT_AC);Wait(30);
  t_r
  OnRev(OUT_AC);Wait(30);Off(OUT_AC);
  s=20;
  follow_line_right();
  Off(OUT_AC);
  Wait(100);
G~K
  t_r
  s=18;
  follow_line_right();
  cross_line();
  follow_line_right();
  cross_line();
  follow_line_right();
  Off(OUT_AC);
  OnFwd(OUT_A);OnRev(OUT_C);Wait(50);
  OnRev(OUT_AC);Wait(20);
  follow_line_right();
  Off(OUT_AC);
K~L
  OnFwd(OUT_A);OnRev(OUT_C);Wait(50);Off(OUT_AC);
  OnRev(OUT_AC);Wait(100);Off(OUT_AC);
  OnRev(OUT_B);Wait(10);Off(OUT_B);
L~M
  s=23;
  ClearTimer(0);
  follow_line_right();
  cross_line();
  follow_line_right();
  cross_line();
  follow_line_left();
  Off(OUT_AC);
M(シューーーーーーーーーーーーーーーーーーーーーーート!!!!!!!!)
  OnFwd(OUT_C);OnRev(OUT_A);Wait(50);
  Off(OUT_AC);Wait(80);
  OnFwd(OUT_B);Wait(10);
  Off(OUT_ABC);
  }
*問題点 [#p35fef67]
-動きがガタガタし過ぎである。
*まとめと感想 [#y774b0c4]

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