[[2006a/B4]] **黒い線上を走るプログラム [#l5c994af] sub turn_light() //光りセンサーによる反応 { if(SENSOR_1< 50) //左が黒かったら { OnFwd(OUT_C); //左に曲がる Off(OUT_A); } if(SENSOR_3 < 48) //右が黒かったら { OnFwd(OUT_A); //右に曲がる Off(OUT_C); } } _ sub turn_tach() //タッチセンサーによる反応 { OnRev(OUT_A+OUT_C);Wait(100); //前にあるセンサーが反応したら、一旦引いて OnFwd(OUT_A); OnRev(OUT_C);Wait(150); //ターン Off(OUT_A+OUT_C); } _ task main () //メインタスク { SetSensor(SENSOR_1,SENSOR_LIGHT); //ライト SetSensor(SENSOR_2,SENSOR_TOUCH); //タッチ SetSensor(SENSOR_3,SENSOR_LIGHT); //ライトセンサーを定義 while(true) { OnFwd(OUT_A+OUT_C); while(SENSOR_2 == 0) //タッチセンサーが反応してない時 { turn_light(); //光りセンサーによる反応を実行 } turn_tach(); //タッチセンサーによる反応を実行 } } **ロボットの説明 [#f2aa9b4a] 今回のマシンはこのような感じです!~ 特徴は光センサーが2個あることです。 #ref(2006a/B4/課題2左/R0011398.JPG,40%) ちなみに最初はセンサーが1個のこんな感じのロボでした。 #ref(2006a/B4/課題2左/DCF_0004.JPG,30%) この青いブロックの下に光センサーが組み込まれています。 #ref(2006a/B4/課題2左/R0011403.JPG,40%) このように、電源を入れるとセンサーが赤く光ります。 #ref(2006a/B4/課題2左/R0011404.JPG,40%) そしてコースはこれになりました!~ コースがあまりにも単純なコースにしてしまったため、なんとなく顔を描いてみました。 #ref(2006a/B4/課題2左/R0011412.JPG,40%) 下の写真を見るとわかるように黒い線を2個のセンサーの間になるように設置します。~ この状態にしてプログラムを実行すればロボットは2個のセンサーの間に黒線が収まるように維持しながら走って行きます。~ つまり、ライントレースすることになるわけです。 #ref(2006a/B4/課題2左/R0011413.JPG,40%) **苦労した点 [#k448022b] プログラムのif&while節の使い方がよく分からなかった。タッチセンサーと光センサーの両方を使わなければならなかったのでとにかく難しかった。特にセンサーを二つにした分、プログラムが多少複雑になったので大変だった。 **工夫した点 [#le9713c2] 課題1の時と同様できる限りマシンをシンプルにした。センサーが1つやと上手く曲がってくれなかったので光センサーを2つつけてみました(上図を参照)。そうすることにより、前よりもスムーズな動きが可能となった。 **感想 [#ib343e2a] この課題をやる週にどこかの教室にロボットを忘れてしまいあま りたいしたロボットは出来なかったが結構上手くいったのでよか ったと思う。 **コメントお願いします [#x3860049] #comment