2016a/Member/mitsuta/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*ロボット紹介* [#qf1f6892]
#ref(1467905824003.jpg)
本体の前方に光センサーを取り付けた。
*プログラムの説明* [#g3491b90]
定義
#define BLACK 34
#define WHITE 70
#define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20); //左に回転
#define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20); //右に回転
#define nMAX 200 //
#define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);W...
#define STEP 1 //
#define GO OnFwd(OUT_BC,40);Wait(350); //前進する
#define GO2 OnFwd(OUT_BC,40);Wait(150); //前進する
#define FWD2 OnFwd(OUT_BC,40);Wait(500); //前進する
#define LEFT2 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(500);...
#define LEFT3 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(300);...
#define LEFT4 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(170);...
#define RIGHT2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(480)...
#define TURN OnFwd(OUT_C,40);OnRev(OUT_B,40);Wait(650);O...
#define TURN2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(200);...
サブルーチン(交差点を判断するプログラム、Cコース)
sub normal ()
{
SetSensorLight(S2); //光センサーを2に
int nOnline=0;
int k=0;
while(k==0){
while(nOnline < nMAX){
if (SENSOR_2<BLACK) { //もしセンサーが定義した(BLACK ...
RIGHT; //右に回転
nOnline++; //カウントを増やす
} else
if (SENSOR_2<WHITE) { //もしセンサーが定義した(WHITE ...
LEFT; //左に回転
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
short_break; //止まるまた、音を鳴らす
k++; //カウントを増やす
nOnline=0; //カウントをリセット
}
}
プログラム
task main ()
{
normal (); //交差点を判断する
LEFT2; //左へ回転
normal (); //交差点を判断する
LEFT2; //左へ回転
normal (); //交差点を判断する
GO; //直進
LEFT3; //左へ回転
normal (); //交差点を判断する
GO2; //直進
LEFT4; //左へ回転
normal (); //交差点を判断する
TURN; //左へ回転
TURN2; //TURNよりも小さく左へ回転
GO; //直進
normal (); //交差点を判断する
RIGHT2; //右へ回転
normal (); //交差点を判断する
LEFT2; //左へ回転
normal (); //交差点を判断する
FWD2; //ゴールへ直進
Off(OUT_BC);//止まる
}
*交差点の判断方法 [#p07cf209]
nOnlineは黒と判断する関数またkはnOnlineがnMAXの値を超えた...
これらを用いて黒いラインをカウントしてnOnlineが200回連...
*反省点* [#q61fc98e]
交差点を認識してから次のラインに行くのに微調整が必要だっ...
終了行:
[[2016a/Member]]
*ロボット紹介* [#qf1f6892]
#ref(1467905824003.jpg)
本体の前方に光センサーを取り付けた。
*プログラムの説明* [#g3491b90]
定義
#define BLACK 34
#define WHITE 70
#define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20); //左に回転
#define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20); //右に回転
#define nMAX 200 //
#define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);W...
#define STEP 1 //
#define GO OnFwd(OUT_BC,40);Wait(350); //前進する
#define GO2 OnFwd(OUT_BC,40);Wait(150); //前進する
#define FWD2 OnFwd(OUT_BC,40);Wait(500); //前進する
#define LEFT2 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(500);...
#define LEFT3 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(300);...
#define LEFT4 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(170);...
#define RIGHT2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(480)...
#define TURN OnFwd(OUT_C,40);OnRev(OUT_B,40);Wait(650);O...
#define TURN2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(200);...
サブルーチン(交差点を判断するプログラム、Cコース)
sub normal ()
{
SetSensorLight(S2); //光センサーを2に
int nOnline=0;
int k=0;
while(k==0){
while(nOnline < nMAX){
if (SENSOR_2<BLACK) { //もしセンサーが定義した(BLACK ...
RIGHT; //右に回転
nOnline++; //カウントを増やす
} else
if (SENSOR_2<WHITE) { //もしセンサーが定義した(WHITE ...
LEFT; //左に回転
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
short_break; //止まるまた、音を鳴らす
k++; //カウントを増やす
nOnline=0; //カウントをリセット
}
}
プログラム
task main ()
{
normal (); //交差点を判断する
LEFT2; //左へ回転
normal (); //交差点を判断する
LEFT2; //左へ回転
normal (); //交差点を判断する
GO; //直進
LEFT3; //左へ回転
normal (); //交差点を判断する
GO2; //直進
LEFT4; //左へ回転
normal (); //交差点を判断する
TURN; //左へ回転
TURN2; //TURNよりも小さく左へ回転
GO; //直進
normal (); //交差点を判断する
RIGHT2; //右へ回転
normal (); //交差点を判断する
LEFT2; //左へ回転
normal (); //交差点を判断する
FWD2; //ゴールへ直進
Off(OUT_BC);//止まる
}
*交差点の判断方法 [#p07cf209]
nOnlineは黒と判断する関数またkはnOnlineがnMAXの値を超えた...
これらを用いて黒いラインをカウントしてnOnlineが200回連...
*反省点* [#q61fc98e]
交差点を認識してから次のラインに行くのに微調整が必要だっ...
ページ名: