[[2016a/Member]]

*目次 [#vb047a36]
#contents

*はじめに [#gca5125f]
#ref(2016a-mission2.png)

課題2の内容は、光センサーを用いて
次のいずれかの経路を黒い線にそって動くロボットを作成する (他のメンバーとは別の経路になるようにする)。ただし、なるべく速く正確に動くロボットになるように工夫して、交差点では1秒間停止すること。
・A地点からB地点へ (一人目)
A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点
・B地点からC地点へ (二人目)
B地点 → R右折 → Q直進 → Q直進 →P右折 → S右折 → C地点
・C地点からA地点へ (三人目)
C地点 → S左折 → P左折 → Q直進 → Q直進 → R右折 → P左折 → A地点
(>2016年度前期/課題2)より
今回は、A地点からB地点へロボットをライントレースさせた。
*ロボット本体の説明 [#y97e9f0f]
#ref(dc8c76bc-1dc8-4fe5-85a2-f6bf5b867d3f.jpg)

ロボットの前方についているのが光センサーである。
ロボットの機体は初期状態のまま使用した。
#ref(ba881582-7541-414d-bf2f-1e1f75e8949a.jpg)
光センサーは、地表面から1センチほど離した。

*プログラミングの説明 [#x55c6767]
 定義文
定義文
 #define BLACK  34
 #define WHITE 60
 #define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20);
 #define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20);
 #define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20);//左旋回
 #define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20);//右旋回
 #define nMAX 295
 #define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);Wait(1000)
 #define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);Wait(1000)//1秒間の停止と発音
 #define STEP 1
 #define GO (OUT_BC,40);Wait(500);
 #define GO2 (OUT_BC,40);Wait(800);
 #define go_f OnFwd(OUT_BC,40);Wait(500);//0.5秒前進
 #define go_f2 OnFwd(OUT_BC,40);Wait(800);//0.5秒前進
 #define LEFT2 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(500);
 #define RIGHT2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(500);

サブルーチン 
 sub normal ()
 {
  SetSensorLight(S2);
  int nOnline=0;
 SetSensorLight(S2);
  int nOnline=0;//カウント開始
  int k=0;
   while(k==0){
   while(nOnline < nMAX){
   if (SENSOR_2<BLACK) {
     RIGHT;
  while(k==0){
  while(nOnline < nMAX){//カウントがnMax以下の時
  if (SENSOR_2<BLACK) {//黒の時右
    RIGHT;
   nOnline++;
    } else
   if (SENSOR_2<WHITE) {
     LEFT;
    nOnline=0;
   if (SENSOR_2<WHITE) {//白の時左
    LEFT;
   nOnline=0;
   }
   Wait(STEP);
  }
  short_break;
  k++;
  nOnline=0;
   }
 }

 task main ()
プログラミング
 task main()
 {
 normal();
 RIGHT;
  go_f;
 normal();
 GO;
  go_f;
 normal();
 GO;
  go_f;
 normal();
 RIGHT2;
  LEFT2;
 normal();
 RIGHT2;
 normal();
 GO2;
  go_f2;
 }


*感想 [#bdf73b90]
光センサーを用いた課題2は、
センサーの調子や、ロボット自体の判断が関わってきたので
課題1に比べるとかなり難易度が高かった。
プログラミングに関しても、
課題1に比べ、使用する単語が増え、、大変だった。
しかしその分、プログラミングに関する
理解が深まった。


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