2015b/Member/nakamura/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015b/Member]]
*トレースロボット [#g9143c28]
**概要 [#v39abe10]
今回は光センサーを用いて、マジックで書いた線をたどりなが...
コースは下の図であり、交差点で数えてA→直進→直進→右折→右...
&ref(2015b/Member/nakamura/Mission2/2015b-mission2.png,70...
**ロボット本体 [#aa17364a]
ロボット本体は左右の車輪が別々に動いてくれればよいのでド...
**プログラム [#o8c9cd6e]
今回の課題は交差点で曲がるということと黒線をトレースする...
しかし黒線のトレースは比較的うまくいったが交差点の判断に...
最初は黒線の右側だけを動くプログラムだったので円の内側を...
そこでサブルーチンとして黒線の右側、左側を動くプログラム...
***マクロと変数の定義 [#a8018ac2]
#define TMAX 23 //交差点と識別するための時間
#define oto PlaySound(SOUND_CLICK);Off(OUT_AC);Wait(100)...
int t=0; //交差点を通った回数
***サブルーチン [#x6993350]
黒線の右側を動く
sub susume_1()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0) < TMAX){ //TMAX...
if(SENSOR_2 > 54){
OnFwd(OUT_C);OnRev(OUT_A);ClearTimer(0); ...
} else if(SENSOR_2 > 51){
OnFwd(OUT_C);Off(OUT_A);ClearTimer(0); ...
} else if(SENSOR_2 > 44){
OnFwd(OUT_AC);ClearTimer(0); ...
} else if(SENSOR_2 > 41){
OnFwd(OUT_A);Off(OUT_C);ClearTimer(0); ...
} else{
OnFwd(OUT_A);OnRev(OUT_C); ...
}
}
t=t+1;
}
黒線の左側を動く
sub susume_2()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0) < TMAX){
if(SENSOR_2 > 54){
OnFwd(OUT_A);OnRev(OUT_C);ClearTimer(0); ...
} else if(SENSOR_2 > 51){
OnFwd(OUT_A);Off(OUT_C);ClearTimer(0); ...
} else if(SENSOR_2 > 44){
OnFwd(OUT_AC);ClearTimer(0); ...
} else if(SENSOR_2 > 41){
OnFwd(OUT_C);Off(OUT_A);ClearTimer(0); ...
} else{
OnFwd(OUT_C);OnRev(OUT_A); ...
}
}
t=t+1;
}
***メインプログラム [#xc909c26]
task main()
{
/* 黒線の左側を進む */
while(t <= 9){
if(t <= 2){
susume_2();
oto;OnFwd(OUT_AC);
Wait(30);Off(OUT_AC);Wait(100); //スタ...
} else if(t <= 3){
OnFwd(OUT_A);Off(OUT_C);Wait(30);OnFwd(O...
/* 黒線の右側を進む */
susume_1();
} else if(t <= 4){
oto;
OnFwd(OUT_A);OnRev(OUT_C);Wait(80); ...
OnFwd(OUT_A);Off(OUT_C);Wait(40);
OnFwd(OUT_AC);Wait(20);
Off(OUT_AC);Wait(100);
susume_1();
} else if(t <= 5){
oto;
OnFwd(OUT_A);OnRev(OUT_C);Wait(30); ...
Off(OUT_AC);Wait(30);
OnFwd(OUT_AC);Wait(30);
Off(OUT_AC);Wait(100);
/* 黒線の左側を進む */
susume_2();
} else{
oto;
OnFwd(OUT_C);OnRev(OUT_A);Wait(30); ...
Off(OUT_AC);Wait(100);
susume_2();
}
}
OnFwd(OUT_AC);Wait(50);Off(OUT_AC);
}
**まとめ [#tc2fdde5]
このプログラムを何回か試してみたが誤差が出てしまい最後ま...
終了行:
[[2015b/Member]]
*トレースロボット [#g9143c28]
**概要 [#v39abe10]
今回は光センサーを用いて、マジックで書いた線をたどりなが...
コースは下の図であり、交差点で数えてA→直進→直進→右折→右...
&ref(2015b/Member/nakamura/Mission2/2015b-mission2.png,70...
**ロボット本体 [#aa17364a]
ロボット本体は左右の車輪が別々に動いてくれればよいのでド...
**プログラム [#o8c9cd6e]
今回の課題は交差点で曲がるということと黒線をトレースする...
しかし黒線のトレースは比較的うまくいったが交差点の判断に...
最初は黒線の右側だけを動くプログラムだったので円の内側を...
そこでサブルーチンとして黒線の右側、左側を動くプログラム...
***マクロと変数の定義 [#a8018ac2]
#define TMAX 23 //交差点と識別するための時間
#define oto PlaySound(SOUND_CLICK);Off(OUT_AC);Wait(100)...
int t=0; //交差点を通った回数
***サブルーチン [#x6993350]
黒線の右側を動く
sub susume_1()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0) < TMAX){ //TMAX...
if(SENSOR_2 > 54){
OnFwd(OUT_C);OnRev(OUT_A);ClearTimer(0); ...
} else if(SENSOR_2 > 51){
OnFwd(OUT_C);Off(OUT_A);ClearTimer(0); ...
} else if(SENSOR_2 > 44){
OnFwd(OUT_AC);ClearTimer(0); ...
} else if(SENSOR_2 > 41){
OnFwd(OUT_A);Off(OUT_C);ClearTimer(0); ...
} else{
OnFwd(OUT_A);OnRev(OUT_C); ...
}
}
t=t+1;
}
黒線の左側を動く
sub susume_2()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0) < TMAX){
if(SENSOR_2 > 54){
OnFwd(OUT_A);OnRev(OUT_C);ClearTimer(0); ...
} else if(SENSOR_2 > 51){
OnFwd(OUT_A);Off(OUT_C);ClearTimer(0); ...
} else if(SENSOR_2 > 44){
OnFwd(OUT_AC);ClearTimer(0); ...
} else if(SENSOR_2 > 41){
OnFwd(OUT_C);Off(OUT_A);ClearTimer(0); ...
} else{
OnFwd(OUT_C);OnRev(OUT_A); ...
}
}
t=t+1;
}
***メインプログラム [#xc909c26]
task main()
{
/* 黒線の左側を進む */
while(t <= 9){
if(t <= 2){
susume_2();
oto;OnFwd(OUT_AC);
Wait(30);Off(OUT_AC);Wait(100); //スタ...
} else if(t <= 3){
OnFwd(OUT_A);Off(OUT_C);Wait(30);OnFwd(O...
/* 黒線の右側を進む */
susume_1();
} else if(t <= 4){
oto;
OnFwd(OUT_A);OnRev(OUT_C);Wait(80); ...
OnFwd(OUT_A);Off(OUT_C);Wait(40);
OnFwd(OUT_AC);Wait(20);
Off(OUT_AC);Wait(100);
susume_1();
} else if(t <= 5){
oto;
OnFwd(OUT_A);OnRev(OUT_C);Wait(30); ...
Off(OUT_AC);Wait(30);
OnFwd(OUT_AC);Wait(30);
Off(OUT_AC);Wait(100);
/* 黒線の左側を進む */
susume_2();
} else{
oto;
OnFwd(OUT_C);OnRev(OUT_A);Wait(30); ...
Off(OUT_AC);Wait(100);
susume_2();
}
}
OnFwd(OUT_AC);Wait(50);Off(OUT_AC);
}
**まとめ [#tc2fdde5]
このプログラムを何回か試してみたが誤差が出てしまい最後ま...
ページ名: