2005/C2/どみ

黒い線に沿って動くロボット(モーター2個、センサー1個)

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);
		}
	}
}

プログラムについて

左右に首(?)を振りながら進むプログラム。最初、黒線上では右、線外では左のモーターを前進させるだけだったが、ロボット自体の回転半径が大きいため、急カーブではコースアウトを繰り返した。そこで、片方の状態が0.2秒以上続いた場合は逆のモーターを後進させ、速やかにコースに戻るようにしたところ、きちんとコースをたどるようになった。

コメントをお願いします

  • 0.2秒という時間や光センサの閾値の40などは最初に定数として定義(#define で)しておくと調整が楽になりますし、プログラムも分かりやすくなります。 -- 松本(教員)? 2005-12-12 (月) 12:25:20


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-12 (月) 12:44:32