- 追加された行はこの色です。
- 削除された行はこの色です。
[[2005/A2/課題3]]
*作成中... [#bb617b20]
*アンバランス [#de3b3251]
モーター2個、光センサー1個使用。
**プログラム [#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個、光センサー1個使用。
モーター1個、光センサー2個使用。
**プログラム [#b3bf4be0]
task main(){
SetSensor (SENSOR_1, SENSOR_LIGHT);
SetSensor (SENSOR_3, SENSOR_LIGHT);
OnRev(OUT_A); //きっかけ
OnRev(OUT_A); //きっかけ、左タイヤを正回転
while(true){
if(SENSOR_1 < 50){ //左センサ黒tのる
OnFwd(OUT_A); //right_tire go!
if(SENSOR_1 < 50){ //左のセンサが線に乗ったら
OnFwd(OUT_A); //右タイヤを回す
until(SENSOR_3 < 43);
}if(SENSOR_3 < 43){ //right on black
OnRev(OUT_A); //left_tire go!
}if(SENSOR_3 < 43){ //右のセンサが線に乗ったら
OnRev(OUT_A); //左タイヤを回す
until(SENSOR_1 < 50);
}
}
}
**ロボの話 [#ffd1558f]
モーター1個だけを使用で試行錯誤を繰り返す。
富岡さんのスケッチも参考にしてみたがなかなかうまくいかなった。
試行錯誤の結果、説明書のシークレットのページで左にだけなら曲がれるようになり、
同時に、モーター1個で前進後退の方法を理解した。
それに伴い、右折左折しかできないロボを完成。
初めは光センサ1個でトレースさせていたが、車輪を回すのにギヤではなく
輪ゴムを使っていたため、ラインに乗った乗らないのプログラムでは
前進するまでの時間が稼げず遅々として進まないので、
光センサをラインを挟むように2個使った。これで少しはマシになったが遅いのは
ご愛嬌。
**プログラムの話 [#r6b10d26]
片方にしか曲がれないので逆戻りしてしまった。最初はifである時間以上トレース出来なければ次のトレースを無視するなどを考えたけど、
それだと一回転してもカーブを通過していなかったら意味が無いので却下した
**作成者 [#q68b9c0b]
キャべツ トマト 富岡
**感想 [#te268daa]
#comment