2016b/Member/suzukaze/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題 [#uf137833]
ライントレースをしながら途中のピンポン球を拾い、コースの...
*機体 [#jdea1157]
**全体的な構造 [#a1930f46]
形としてはコンパクトで、かつ光センサーが2つの駆動輪の真...
**ボールを取る機構 [#k42ac768]
ボールの取り方としては超音波センサーでボールを認識して電...
&ref(2016b/Member/suzukaze/Mission2/DSC_0022.JPG,10%,アー...
**光センサー [#beb019b2]
取扱説明書に載っている機体だとセンサーの位置が高くタイヤ...
&ref(2016b/Member/suzukaze/Mission2/DSC_0021.JPG,10%,光セ...
*プログラミング [#f265ef71]
**ライントレース [#p79882a5]
#define SENKAIR OnFwdSync(OUT_BC,-50,-100);//右旋回
#define SENKAIL OnFwdSync(OUT_BC,-50,100);//左旋回
#define TURNR Off(OUT_B);OnFwd(OUT_C,-50);//右カーブ
#define TURNL Off(OUT_C);OnFwd(OUT_B,-50);//左カーブ
#define TYOKUSIN OnFwdSync(OUT_BC,-50,0);//直進
SetSensorLight(S1);
SetSensorLowspeed(S2);
t0=CurrentTick();//交差点検知に使用
while(CurrentTick()-t0<=600){
if(SENSOR_1<45){
SENKAIL; //ラインの真ん中では左旋回
} else if(SENSOR_1<48){
TURNL; //ラインに少し入ったら左カ...
} else if(SENSOR_1<60){
TYOKUSIN; //ラインの境界線あたりで直進
t0=CurrentTick(); //タイマーをリセット
} else if(SENSOR_1<65){
TURNR; //ラインから外れたら右カーブ
t0=CurrentTick(); //タイマーをリセット
} else if(SENSOR_1>=65){
SENKAIR; //ラインから大きく外れたら...
t0=CurrentTick(); //タイマーをリセット
}
ライントレースはラインの左側を通ることにした。これにより...
**ボールを取る [#vd389c75]
if(n==0){ //2回目の作動防止
if(SensorUS(S2)<9){ //超音波センサーでボール...
Off(OUT_BC);
Wait(1000);
RotateMotor(OUT_A,40,-60); //アームを下げる
n=n+1; //2回目の作動防止
t0=CurrentTick(); //タイマーをリセット
}
}
上でも述べたようにボールの認識は超音波センサーで行った。...
**「KIHON()」 [#i20afdc5]
上ではライントレースとボールを取るプログラムを別々に書い...
#define SENKAIR OnFwdSync(OUT_BC,-50,-100);//右旋回
#define SENKAIL OnFwdSync(OUT_BC,-50,100);//左旋回
#define TURNR Off(OUT_B);OnFwd(OUT_C,-50);//右カーブ
#define TURNL Off(OUT_C);OnFwd(OUT_B,-50);//左カーブ
#define TYOKUSIN OnFwdSync(OUT_BC,-50,0);//直進
sub KIHON()
{
SetSensorLight(S1);
SetSensorLowspeed(S2);
t0=CurrentTick();
while(CurrentTick()-t0<=600){
if(SENSOR_1<45){
SENKAIL;
} else if(SENSOR_1<48){
TURNL;
} else if(SENSOR_1<60){
TYOKUSIN;
t0=CurrentTick();
} else if(SENSOR_1<65){
TURNR;
t0=CurrentTick();
} else if(SENSOR_1>=65){
SENKAIR;
t0=CurrentTick();
}
if(n==0){
if(SensorUS(S2)<9){
Off(OUT_BC);
Wait(1000);
RotateMotor(OUT_A,40,-60);
n=n+1;
t0=CurrentTick();
}
}
}
Off(OUT_BC);
Wait(1000); //交差点で1秒止まる
}
**交差点 [#u1cfb535]
#define KOUSATEN_MAE TURNR;Wait(500); ...
#define KOUSATEN_MIGI TURNR;Wait(2000);SENKAIR;Wait(150...
今回の課題で1番失敗したと思う部分。最初にライントレース...
**task main() [#md920e4d]
#define KOUSATEN_MAE TURNR;Wait(500);
#define KOUSATEN_MIGI TURNR;Wait(2000);SENKAIR;Wait(150...
task main ()
{
RotateMotor(OUT_A,40,60);
n=0;
KIHON();
KOUSATEN_MIGI;//P右折
KIHON();
KOUSATEN_MAE;//Q直進
KIHON();
KOUSATEN_MAE;//Q直進2回目
KIHON();
KOUSATEN_MIGI;//R右折
KIHON();
KOUSATEN_MAE;//P2直進
KIHON();
KOUSATEN_MIGI;//S右折
KIHON();
KOUSATEN_MAE; //ゴールにむき...
Off(OUT_BC);
Wait(1000);
RotateMotor(OUT_A,40,60); //アームを上げる
RotateMotorEx(OUT_BC,50,720,0,true,true); //後ろに下がる
Wait(500);
RotateMotor(OUT_A,40,-60); //アームを下げる
RotateMotorEx(OUT_BC,-50,720,0,true,true);//前に進むこと...
Off(OUT_BC);
}
成功回数1回。電圧の変化による交差点の誤検知は仕方ないと...
*まとめ [#f7e15046]
今回のまとめとしては詰めが甘いだと思う。プログラム自体は...
終了行:
#contents
*課題 [#uf137833]
ライントレースをしながら途中のピンポン球を拾い、コースの...
*機体 [#jdea1157]
**全体的な構造 [#a1930f46]
形としてはコンパクトで、かつ光センサーが2つの駆動輪の真...
**ボールを取る機構 [#k42ac768]
ボールの取り方としては超音波センサーでボールを認識して電...
&ref(2016b/Member/suzukaze/Mission2/DSC_0022.JPG,10%,アー...
**光センサー [#beb019b2]
取扱説明書に載っている機体だとセンサーの位置が高くタイヤ...
&ref(2016b/Member/suzukaze/Mission2/DSC_0021.JPG,10%,光セ...
*プログラミング [#f265ef71]
**ライントレース [#p79882a5]
#define SENKAIR OnFwdSync(OUT_BC,-50,-100);//右旋回
#define SENKAIL OnFwdSync(OUT_BC,-50,100);//左旋回
#define TURNR Off(OUT_B);OnFwd(OUT_C,-50);//右カーブ
#define TURNL Off(OUT_C);OnFwd(OUT_B,-50);//左カーブ
#define TYOKUSIN OnFwdSync(OUT_BC,-50,0);//直進
SetSensorLight(S1);
SetSensorLowspeed(S2);
t0=CurrentTick();//交差点検知に使用
while(CurrentTick()-t0<=600){
if(SENSOR_1<45){
SENKAIL; //ラインの真ん中では左旋回
} else if(SENSOR_1<48){
TURNL; //ラインに少し入ったら左カ...
} else if(SENSOR_1<60){
TYOKUSIN; //ラインの境界線あたりで直進
t0=CurrentTick(); //タイマーをリセット
} else if(SENSOR_1<65){
TURNR; //ラインから外れたら右カーブ
t0=CurrentTick(); //タイマーをリセット
} else if(SENSOR_1>=65){
SENKAIR; //ラインから大きく外れたら...
t0=CurrentTick(); //タイマーをリセット
}
ライントレースはラインの左側を通ることにした。これにより...
**ボールを取る [#vd389c75]
if(n==0){ //2回目の作動防止
if(SensorUS(S2)<9){ //超音波センサーでボール...
Off(OUT_BC);
Wait(1000);
RotateMotor(OUT_A,40,-60); //アームを下げる
n=n+1; //2回目の作動防止
t0=CurrentTick(); //タイマーをリセット
}
}
上でも述べたようにボールの認識は超音波センサーで行った。...
**「KIHON()」 [#i20afdc5]
上ではライントレースとボールを取るプログラムを別々に書い...
#define SENKAIR OnFwdSync(OUT_BC,-50,-100);//右旋回
#define SENKAIL OnFwdSync(OUT_BC,-50,100);//左旋回
#define TURNR Off(OUT_B);OnFwd(OUT_C,-50);//右カーブ
#define TURNL Off(OUT_C);OnFwd(OUT_B,-50);//左カーブ
#define TYOKUSIN OnFwdSync(OUT_BC,-50,0);//直進
sub KIHON()
{
SetSensorLight(S1);
SetSensorLowspeed(S2);
t0=CurrentTick();
while(CurrentTick()-t0<=600){
if(SENSOR_1<45){
SENKAIL;
} else if(SENSOR_1<48){
TURNL;
} else if(SENSOR_1<60){
TYOKUSIN;
t0=CurrentTick();
} else if(SENSOR_1<65){
TURNR;
t0=CurrentTick();
} else if(SENSOR_1>=65){
SENKAIR;
t0=CurrentTick();
}
if(n==0){
if(SensorUS(S2)<9){
Off(OUT_BC);
Wait(1000);
RotateMotor(OUT_A,40,-60);
n=n+1;
t0=CurrentTick();
}
}
}
Off(OUT_BC);
Wait(1000); //交差点で1秒止まる
}
**交差点 [#u1cfb535]
#define KOUSATEN_MAE TURNR;Wait(500); ...
#define KOUSATEN_MIGI TURNR;Wait(2000);SENKAIR;Wait(150...
今回の課題で1番失敗したと思う部分。最初にライントレース...
**task main() [#md920e4d]
#define KOUSATEN_MAE TURNR;Wait(500);
#define KOUSATEN_MIGI TURNR;Wait(2000);SENKAIR;Wait(150...
task main ()
{
RotateMotor(OUT_A,40,60);
n=0;
KIHON();
KOUSATEN_MIGI;//P右折
KIHON();
KOUSATEN_MAE;//Q直進
KIHON();
KOUSATEN_MAE;//Q直進2回目
KIHON();
KOUSATEN_MIGI;//R右折
KIHON();
KOUSATEN_MAE;//P2直進
KIHON();
KOUSATEN_MIGI;//S右折
KIHON();
KOUSATEN_MAE; //ゴールにむき...
Off(OUT_BC);
Wait(1000);
RotateMotor(OUT_A,40,60); //アームを上げる
RotateMotorEx(OUT_BC,50,720,0,true,true); //後ろに下がる
Wait(500);
RotateMotor(OUT_A,40,-60); //アームを下げる
RotateMotorEx(OUT_BC,-50,720,0,true,true);//前に進むこと...
Off(OUT_BC);
}
成功回数1回。電圧の変化による交差点の誤検知は仕方ないと...
*まとめ [#f7e15046]
今回のまとめとしては詰めが甘いだと思う。プログラム自体は...
ページ名: