2005/C2/どみ/課題3(1)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2005/C2/どみ]]
*黒い線に沿って動くロボット(モーター2個、センサー1個) [#u6f9c5b0]
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサ設定
while (true) {
if (SENSOR_1<40) { //黒線上にいるとき
OnFwd(OUT_C);
Wait(20);
OnRev(OUT_A);
until(SENSOR_1>40);
Off(OUT_C);
} else { //黒線から外れたとき
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_C);
until(SENSOR_1<40);
Off(OUT_A);
}
}
}
*プログラムについて [#te4b88c3]
左右に首(?)を振りながら進むプログラム。最初、黒線上では右、線外では左のモーターを前進させるだけだったが、ロボット自体の回転半径が大きいため、急カーブではコースアウトを繰り返した。そこで、片方の状態が0.2秒以上続いた場合は逆のモーターを後進させ、速やかにコースに戻るようにしたところ、きちんとコースをたどるようになった。
*コメントをお願いします [#w8596320]
-0.2秒という時間や光センサの閾値の40などは最初に定数として定義(#define で)しておくと調整が楽になりますし、プログラムも分かりやすくなります。 -- [[松本(教員)]] &new{2005-12-12 (月) 12:25:20};
#comment
終了行:
[[2005/C2/どみ]]
*黒い線に沿って動くロボット(モーター2個、センサー1個) [#u6f9c5b0]
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサ設定
while (true) {
if (SENSOR_1<40) { //黒線上にいるとき
OnFwd(OUT_C);
Wait(20);
OnRev(OUT_A);
until(SENSOR_1>40);
Off(OUT_C);
} else { //黒線から外れたとき
OnFwd(OUT_A);
Wait(20);
OnRev(OUT_C);
until(SENSOR_1<40);
Off(OUT_A);
}
}
}
*プログラムについて [#te4b88c3]
左右に首(?)を振りながら進むプログラム。最初、黒線上では右、線外では左のモーターを前進させるだけだったが、ロボット自体の回転半径が大きいため、急カーブではコースアウトを繰り返した。そこで、片方の状態が0.2秒以上続いた場合は逆のモーターを後進させ、速やかにコースに戻るようにしたところ、きちんとコースをたどるようになった。
*コメントをお願いします [#w8596320]
-0.2秒という時間や光センサの閾値の40などは最初に定数として定義(#define で)しておくと調整が楽になりますし、プログラムも分かりやすくなります。 -- [[松本(教員)]] &new{2005-12-12 (月) 12:25:20};
#comment
ページ名: