2013b/Member/ryois/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2013b/Member]]
#contents
*ロボットの紹介 [#e76e8d8f]
&ref(2013b/Member/ryois/Mission1/image.jpeg,15%);
・光センサーを車体に近づけることで。より正確に線を追うこ...
・タッチセンサーの前にバンパーを取り付けることで、タッチ...
・ロボットが安定して動けるように、ロボットの説明書を参考...
*コースの攻略 [#sc7bc5e5]
⓪:スタートから一回目の交差点までを
?:一回目の交差点
?:一回目の交差点から二回目の交差点まで
?:二回目の交差点から三回目の交差点を通り過ぎるまで
?:三回目の交差点から四回目の交差点まで
?:四回目の交差点
?:四回目の交差点からゴールまで
というようにコースを分割してロボットを動かす。
カウンターを使う方法ではカーブ前の交差点、曲がり方の急...
急カーブのところでは光センサーによってモーターを早く動...
交差点の近くではロボットが旋回する速さを遅くして交差点...
急カーブ、緩いカーブ、直線、交差点で時間を区切りコースを...
*プログラム [#q1452173]
#define THRESHOLD 42 //しきい値
#define hp 7 //速さ(速い)
#define lp 2 //速さ(遅い)
#define set_power_h SetPower(OUT_AC,hp); //速い回転
#define set_power_l SetPower(OUT_AC,lp); //遅い回転
#define g_f set_power_h;OnFwd(OUT_AC); //前進
#define t_l0 set_power_l;OnFwd(OUT_C);Off(OUT_A); //...
#define t_l1 set_power_l;OnFwd(OUT_C);OnRev(OUT_A); //...
#define t_r0 set_power_l;OnFwd(OUT_A);Off(OUT_C); //...
#define t_r1 set_power_l;OnFwd(OUT_A);OnRev(OUT_C); //...
#define t_r4 set_power_l;OnRev(OUT_C);Off(OUT_C); //...
#define time0 700 //⓪を進む時間
#define time1 200 //?を進む時間
#define time2 650 //?を進む時間
#define time3 450 //?を進む時間
#define time4 500 //?を進む時間
#define time5 400 //?を進む時間
#define time6 900 //?を進む時間
ここまでで定義を定めた。
ここからロボットに動きを命令する。
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2をセット...
ClearTimer(0); // タイマーをリセッ...
ここからコースの⓪の部分を命令する。
PlaySound(SOUND_CLICK); //まず音を鳴ら...
while(FastTimer(0)<=time0){
if (SENSOR_2<THRESHOLD-2){ //黒だったら右...
t_r1;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かった...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else if(SENSOR_2<THRESHOLD+10){ //少し白かった...
t_l0;
}else{
t_l1; //他は左旋回
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //
while(FastTimer(0)<=time1){
if(SENSOR_2<THRESHOLD+1){ //少し黒かった...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else { //他は左折
t_l0;
}
}
ここからコースの?の部分を命令する。
右タイヤを戻すことで急なカーブも曲がれるようにした。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリセ...
while(FastTimer(0)<=time2){
if (SENSOR_2<THRESHOLD-2){ //黒かったら右タ...
t_r4;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かったら...
t_r1;
}else if(SENSOR_2<THRESHOLD+7){ //線上だったら直進
g_f;
}else if(SENSOR_2<THRESHOLD+10){ //少し白かったら...
t_l0;
}else{ //他は左旋回
t_l1;
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリセ...
while(FastTimer(0)<=time3){
if(SENSOR_2<THRESHOLD+1){ //少し黒かったら...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上だったら直進
g_f;
}else { //他は左折
t_l0;
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリセ...
while(FastTimer(0)<=time4){
if (SENSOR_2<THRESHOLD-2){ //黒かったら右旋回
t_r1;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かったら...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else if(SENSOR_2<THRESHOLD+13){ //少し白かったら...
t_l0;
}else{ //他は左旋回
t_l1;
}
}
ここからコースの?の部分を命令する。
カーブの直後の交差点なので交差点を渡らずに右折しやすい。
よって、右折をしないプログラムにして交差点を確実に渡れる...
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリ...
while(FastTimer(0)<=time5){
if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else { //他は左折
t_l0;
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリ...
while(FastTimer(0)<=time6){
if (SENSOR_2<THRESHOLD-2){ //黒かったら右...
t_r1;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かった...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else if(SENSOR_2<THRESHOLD+13){ //少し白かった...
t_l0;
}else{ //他は左折
t_l1;
}
}
Off(OUT_AC); //すべての動作...
}
*まとめ [#i7c51d26]
タイマーでプログラムをすることで交差点や急カーブの判断...
しかし、電池の減り具合や到達時間の変化により、タイマーの...
*考察 [#r0a49690]
交差点のたびにプログラムを変えていたのでプログラムが大き...
交差点の判断をタイマーで行ったので、交差点をロボット自...
ロボットの車体で光センサーと前輪が近づけばセンサーと車...
今回はロボットのボディの変更がうまくいかなかった。次の課...
終了行:
[[2013b/Member]]
#contents
*ロボットの紹介 [#e76e8d8f]
&ref(2013b/Member/ryois/Mission1/image.jpeg,15%);
・光センサーを車体に近づけることで。より正確に線を追うこ...
・タッチセンサーの前にバンパーを取り付けることで、タッチ...
・ロボットが安定して動けるように、ロボットの説明書を参考...
*コースの攻略 [#sc7bc5e5]
⓪:スタートから一回目の交差点までを
?:一回目の交差点
?:一回目の交差点から二回目の交差点まで
?:二回目の交差点から三回目の交差点を通り過ぎるまで
?:三回目の交差点から四回目の交差点まで
?:四回目の交差点
?:四回目の交差点からゴールまで
というようにコースを分割してロボットを動かす。
カウンターを使う方法ではカーブ前の交差点、曲がり方の急...
急カーブのところでは光センサーによってモーターを早く動...
交差点の近くではロボットが旋回する速さを遅くして交差点...
急カーブ、緩いカーブ、直線、交差点で時間を区切りコースを...
*プログラム [#q1452173]
#define THRESHOLD 42 //しきい値
#define hp 7 //速さ(速い)
#define lp 2 //速さ(遅い)
#define set_power_h SetPower(OUT_AC,hp); //速い回転
#define set_power_l SetPower(OUT_AC,lp); //遅い回転
#define g_f set_power_h;OnFwd(OUT_AC); //前進
#define t_l0 set_power_l;OnFwd(OUT_C);Off(OUT_A); //...
#define t_l1 set_power_l;OnFwd(OUT_C);OnRev(OUT_A); //...
#define t_r0 set_power_l;OnFwd(OUT_A);Off(OUT_C); //...
#define t_r1 set_power_l;OnFwd(OUT_A);OnRev(OUT_C); //...
#define t_r4 set_power_l;OnRev(OUT_C);Off(OUT_C); //...
#define time0 700 //⓪を進む時間
#define time1 200 //?を進む時間
#define time2 650 //?を進む時間
#define time3 450 //?を進む時間
#define time4 500 //?を進む時間
#define time5 400 //?を進む時間
#define time6 900 //?を進む時間
ここまでで定義を定めた。
ここからロボットに動きを命令する。
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2をセット...
ClearTimer(0); // タイマーをリセッ...
ここからコースの⓪の部分を命令する。
PlaySound(SOUND_CLICK); //まず音を鳴ら...
while(FastTimer(0)<=time0){
if (SENSOR_2<THRESHOLD-2){ //黒だったら右...
t_r1;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かった...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else if(SENSOR_2<THRESHOLD+10){ //少し白かった...
t_l0;
}else{
t_l1; //他は左旋回
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //
while(FastTimer(0)<=time1){
if(SENSOR_2<THRESHOLD+1){ //少し黒かった...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else { //他は左折
t_l0;
}
}
ここからコースの?の部分を命令する。
右タイヤを戻すことで急なカーブも曲がれるようにした。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリセ...
while(FastTimer(0)<=time2){
if (SENSOR_2<THRESHOLD-2){ //黒かったら右タ...
t_r4;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かったら...
t_r1;
}else if(SENSOR_2<THRESHOLD+7){ //線上だったら直進
g_f;
}else if(SENSOR_2<THRESHOLD+10){ //少し白かったら...
t_l0;
}else{ //他は左旋回
t_l1;
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリセ...
while(FastTimer(0)<=time3){
if(SENSOR_2<THRESHOLD+1){ //少し黒かったら...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上だったら直進
g_f;
}else { //他は左折
t_l0;
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリセ...
while(FastTimer(0)<=time4){
if (SENSOR_2<THRESHOLD-2){ //黒かったら右旋回
t_r1;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かったら...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else if(SENSOR_2<THRESHOLD+13){ //少し白かったら...
t_l0;
}else{ //他は左旋回
t_l1;
}
}
ここからコースの?の部分を命令する。
カーブの直後の交差点なので交差点を渡らずに右折しやすい。
よって、右折をしないプログラムにして交差点を確実に渡れる...
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリ...
while(FastTimer(0)<=time5){
if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else { //他は左折
t_l0;
}
}
ここからコースの?の部分を命令する。
PlaySound(SOUND_CLICK); //?の動作になっ...
ClearTimer(0); //タイマーをリ...
while(FastTimer(0)<=time6){
if (SENSOR_2<THRESHOLD-2){ //黒かったら右...
t_r1;
}else if(SENSOR_2<THRESHOLD+1){ //少し黒かった...
t_r0;
}else if(SENSOR_2<THRESHOLD+7){ //線上なら直進
g_f;
}else if(SENSOR_2<THRESHOLD+13){ //少し白かった...
t_l0;
}else{ //他は左折
t_l1;
}
}
Off(OUT_AC); //すべての動作...
}
*まとめ [#i7c51d26]
タイマーでプログラムをすることで交差点や急カーブの判断...
しかし、電池の減り具合や到達時間の変化により、タイマーの...
*考察 [#r0a49690]
交差点のたびにプログラムを変えていたのでプログラムが大き...
交差点の判断をタイマーで行ったので、交差点をロボット自...
ロボットの車体で光センサーと前輪が近づけばセンサーと車...
今回はロボットのボディの変更がうまくいかなかった。次の課...
ページ名: