[[2005/A2/課題3]] *作成中... [#bb617b20] *アンバランス [#de3b3251] モーター2個、光センサー1個使用。 #ref(2005/A2/課題2左/bakusou.jpg) **プログラム [#v0ae3c0b] task main() { SetSensor(SENSOR_2, SENSOR_LIGHT);//センサー2をライトセンサーにする while(true){ if(SENSOR_2<45){ //線上にいるときは左周り OnFwd(OUT_C); } else{ ClearTimer(0); //タイマー0 t=FastTimer(0); //tをタイマー0に定義 OnFwd(OUT_A); //線から外れると右周り if(t>100){ OnFwd(OUT_C);Wait(t+50);//もし一秒いないにラインを見つけられなければ、 //左に1.5秒回転し逆走するのを防ぐ } } Off(OUT_A+OUT_C); } } **ロボの話 [#kc6e9308] 前の課題が遅くなってしまったため、タッチセンサーの付いたロボに 少し強引な形で、光センサーを付け走らせた。 ...想像していたよりも速く、鮮やかなコーナリングを決めていた。 **プログラムの話 [#bf8ebbeb] 時間の都合状、サンプルを少し変えただけの物になってしまった。 周りきれない場合を考えてタイマーを付けた事は、 まあ、良い練習になったと思う。 *モーターが一つ [#q766010b] モーター1個、光センサー2個使用。 #ref(2005/A2/課題3左/pic1.jpg,50%) **プログラム [#b3bf4be0] task main(){ SetSensor (SENSOR_1, SENSOR_LIGHT); SetSensor (SENSOR_3, SENSOR_LIGHT); OnRev(OUT_A); //きっかけ、左タイヤを正回転 while(true){ if(SENSOR_1 < 50){ //左のセンサが線に乗ったら OnFwd(OUT_A); //右タイヤを回す until(SENSOR_3 < 43); }if(SENSOR_3 < 43){ //右のセンサが線に乗ったら OnRev(OUT_A); //左タイヤを回す until(SENSOR_1 < 50); } } } **ロボの話 [#ffd1558f] モーター1個だけを使用で試行錯誤を繰り返す。 富岡さんのスケッチも参考にしてみたがなかなかうまくいかなった。 試行錯誤の結果、説明書のシークレットのページで左にだけなら曲がれるようになり、 同時に、モーター1個で前進後退の方法を理解した。 それに伴い、右折左折しかできないロボを完成。 下の写真はロボット内部。 RCXを運ぶ力を出そうとゴムを引っ張って使うと、 反対側の輪ゴムが空回りせず、 空回りさせようとゴムを緩めると、RCX付ロボが動かない。 大変な板ばさみでした。RCXが浮いてればいけるのだが。 初めは光センサ1個でトレースさせていたが、車輪を回すのにギヤではなく 輪ゴムを使っていたため、「ラインに乗った乗らない」のプログラムでは 前進するまでの時間が稼げず遅々として進まないので、 光センサをラインを挟むように2個使った。 これで少しはマシになったがやはり遅い。 #ref(2005/A2/課題3左/pic2.jpg,50%) #ref(2005/A2/課題3左/pic3.jpg,50%) **プログラムの話 [#r6b10d26] 片方にしか曲がれないので逆戻りしてしまった。最初はifである時間以上トレース出来なければ次のトレースを無視するなどを考えたけど、 それだと一回転してもカーブを通過していなかったら意味が無いので却下した **作成者 [#q68b9c0b] キャべツ トマト 富岡 **感想 [#te268daa] 初め輪ゴムを使う仕組みを思いついた時期待で一杯だったが、 後に再考したらうまく動かない気がして落胆していると、 実際作ってみたものが機能せず、輪ゴムは失敗だったなあと反省した。(富岡製紙) -見ました。きれいにまとまっていると思います。 -- [[ゆん(TA)]] &new{2006-02-02 (木) 17:24:16}; #comment