2008a/A6/課題2左
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2008a/MemberOnly/進行状況A]]
*目次 [#oc70f701]
#contents
*課題 [#v2854fdb]
ライントレースロボット~
黒い線をたどるロボットの作成
*ロボットの説明 [#r34040d4]
#ref(080626_1623~0001.jpg)
光センサー
#ref(080626_1623~0002.jpg)
タッチセンサーと光センサー はじめは光センサーが高すぎて黒いラインを認識できなかったのでブロックを何個も使い低くすることで認識するようにしました。
#ref(./200806121727000.jpg,100%,ロボット);
上からの写真
このロボットは光センサー2つ、タッチセンサー1つを車両の前方に搭載している。~
2つの光センサーでコースの黒い線を挟み光センサーが黒を認識した時に方向転換、直進等の動作を行う。~
タッチセンサーは同じコースを走っているロボットにぶつかったことを認識し停止してロボットが通り過ぎるのを待つ為に付けられている。
*プログラムについて [#f6246dda]
プログラム
#define THRESHOLD 40 //
#define RUN_TIME 1000//
task main ()
{
(SENSOR_1,SENSOR_LIGHT);//センサ端子1に接続されたセンサが光センサ
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ端子3に接続されたセンサが光センサ
SetSensor(SENSOR_2,SENSOR_TOUCH); // センサ端子2に接続されたセンサがタッチセンサ
ClearTimer(0);
while( Timer(0) <= RUN_TIME ){
if (SENSOR_2 == 1) { //タッチセンサに触れた場合車体が止まる
Off(OUT_A+OUT_C);
Wait(300);
} else { //以外のとき
if (SENSOR_1>35){ //光センサ1が白を感知したとき
if (SENSOR_3>35){ //光センサ3が白を感知したとき
OnFwd(OUT_A); //前進
OnFwd(OUT_C);
} else { //光センサ3が黒を感知したとき
if (SENSOR_1<35);
OnFwd(OUT_A); //右折
Off(OUT_C);
}
} else{ //光センサ1が黒を感知したとき
if (SENSOR_3>35 ){ //光センサ3が...を感知したとき
Off(OUT_A); //左折
OnFwd(OUT_C);
} else { //光センサ1、3が黒を感知したとき
Off(OUT_A+OUT_C);//停止
Wait(50);
OnFwd(OUT_A+OUT_C);//直進
Wait(120);
Off(OUT_A+OUT_C);
}
}
}
}
Off(OUT_A+OUT_C);
}
*コースについて [#p42a5df3]
#ref(./200806191728000.jpg,100%,コース);
曲がりやすいようにシンプルなコースにしました。
*問題点 [#rcdf6b33]
色の識別がうまくできず、曲がりたいところで曲がってくれなかった。
タイマーの設定と時間がうまくあわなかった。
*解決策 [#daf848e7]
黒色を濃くして、はじめに比べて光センサーの位置も低くした。
タイマーは何回もやり直した。
*感想 [#d76af606]
黒色にそって曲がるところや、3周してから止まるところなど、難しくて結構時間がかかってしまった。
でも前回よりは、スムーズにできたと思います。
*コメントをどうぞ [#dd55719f]
#comment
終了行:
[[2008a/MemberOnly/進行状況A]]
*目次 [#oc70f701]
#contents
*課題 [#v2854fdb]
ライントレースロボット~
黒い線をたどるロボットの作成
*ロボットの説明 [#r34040d4]
#ref(080626_1623~0001.jpg)
光センサー
#ref(080626_1623~0002.jpg)
タッチセンサーと光センサー はじめは光センサーが高すぎて黒いラインを認識できなかったのでブロックを何個も使い低くすることで認識するようにしました。
#ref(./200806121727000.jpg,100%,ロボット);
上からの写真
このロボットは光センサー2つ、タッチセンサー1つを車両の前方に搭載している。~
2つの光センサーでコースの黒い線を挟み光センサーが黒を認識した時に方向転換、直進等の動作を行う。~
タッチセンサーは同じコースを走っているロボットにぶつかったことを認識し停止してロボットが通り過ぎるのを待つ為に付けられている。
*プログラムについて [#f6246dda]
プログラム
#define THRESHOLD 40 //
#define RUN_TIME 1000//
task main ()
{
(SENSOR_1,SENSOR_LIGHT);//センサ端子1に接続されたセンサが光センサ
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ端子3に接続されたセンサが光センサ
SetSensor(SENSOR_2,SENSOR_TOUCH); // センサ端子2に接続されたセンサがタッチセンサ
ClearTimer(0);
while( Timer(0) <= RUN_TIME ){
if (SENSOR_2 == 1) { //タッチセンサに触れた場合車体が止まる
Off(OUT_A+OUT_C);
Wait(300);
} else { //以外のとき
if (SENSOR_1>35){ //光センサ1が白を感知したとき
if (SENSOR_3>35){ //光センサ3が白を感知したとき
OnFwd(OUT_A); //前進
OnFwd(OUT_C);
} else { //光センサ3が黒を感知したとき
if (SENSOR_1<35);
OnFwd(OUT_A); //右折
Off(OUT_C);
}
} else{ //光センサ1が黒を感知したとき
if (SENSOR_3>35 ){ //光センサ3が...を感知したとき
Off(OUT_A); //左折
OnFwd(OUT_C);
} else { //光センサ1、3が黒を感知したとき
Off(OUT_A+OUT_C);//停止
Wait(50);
OnFwd(OUT_A+OUT_C);//直進
Wait(120);
Off(OUT_A+OUT_C);
}
}
}
}
Off(OUT_A+OUT_C);
}
*コースについて [#p42a5df3]
#ref(./200806191728000.jpg,100%,コース);
曲がりやすいようにシンプルなコースにしました。
*問題点 [#rcdf6b33]
色の識別がうまくできず、曲がりたいところで曲がってくれなかった。
タイマーの設定と時間がうまくあわなかった。
*解決策 [#daf848e7]
黒色を濃くして、はじめに比べて光センサーの位置も低くした。
タイマーは何回もやり直した。
*感想 [#d76af606]
黒色にそって曲がるところや、3周してから止まるところなど、難しくて結構時間がかかってしまった。
でも前回よりは、スムーズにできたと思います。
*コメントをどうぞ [#dd55719f]
#comment
ページ名: