2017a/Member/kk/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
#contents
*課題2 [#fb67d96f]
指定されたコースにそって動くロボットを作成する。詳しくは[...
&br;自分はE地点右折コースを選択した。
*ロボット [#w8699235]
ロボットの構造で工夫した点は、センサーの位置をタイヤの軸...
#ref(./ロボット.JPG,50%,ロボット);
#ref(./ロボット 横.JPG,50%,横から見た図);
*プログラム [#j9a2f0e9]
**総評 [#x49bb0b1]
結論から言うと、このプログラムは私の勘違いにより全体的に...
**プログラム [#z3043da6]
まず、関数を1つ作り、黒線の右側、左側をトレースするプログ...
&br;プログラムの内容は、変数aで何回機体が急激に右(左)に曲...
&br;ここでの問題点は、わざわざ引数を設定する必要がなかっ...
&br;
int a;
sub migi_susumu(int x) //黒線の右側をト...
{
a=0;
while(a<=x){
if(SENSOR_1>=55){
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_A,30);
Off(OUT_C);
}else if(SENSOR_1>=45){
OnFwd(OUT_C,30);
Off(OUT_A);
}else{
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
a=a+1;
}
}
}
sub hidari_susumu(int y) //黒線の左側を...
{
a=0;
while(a<=y){
if(SENSOR_1>=55){
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_C,30);
Off(OUT_A);
}else if(SENSOR_1>=45){
OnFwd(OUT_A,30);
Off(OUT_C);
}else{
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
a=a+1;
}
}
}
次に、音を鳴らすプログラムを定義する。
sub sound_down() //SOUND_DOWNを鳴ら...
{
PlaySound(SOUND_DOWN);
Off(OUT_AC);
Wait(1000);
}
sub sound_up() //SOUND_UPを鳴らす
{
PlaySound(SOUND_UP);
}
上記のサブルーチンを使って、メインのプログラムを書いた。
&br;途中のwhileの中は「曲がり始めやカーブなどを交差点と誤...
また、その後のmigi_susumu(3)も必要なかった。
今回のプログラムで引数に色々な数値が入っているのは、カー...
&br;また、交差点と認識した後のOnFwdやOnRevは、交差点を認...
task main()
{
SetSensorLight(S1);
OnFwd(OUT_AC,30); //スタート地点から出る...
Wait(600);
migi_susumu(3);
sound_up(); //地点E
OnFwd(OUT_AC,30); //機体を黒線の左側にする
Wait(350);
hidari_susumu(3);
sound_down(); //地点P
long t = CurrentTick();
while(CurrentTick()-t<1000){
hidari_susumu(10);
}
hidari_susumu(3);
sound_up(); //地点Q
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(500);
OnFwd(OUT_AC,30);
Wait(400);
hidari_susumu(3);
sound_up(); //地点R
t=CurrentTick();
while(CurrentTick()-t<1000){
hidari_susumu(10);
}
hidari_susumu(3);
sound_down(); //地点T
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(500);
OnFwd(OUT_AC,30);
Wait(400);
t = CurrentTick();
while(CurrentTick()-t<12000){
hidari_susumu(20);
}
hidari_susumu(3);
sound_down(); //地点T
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(600);
OnFwd(OUT_AC,30);
Wait(500);
migi_susumu(3);
sound_up(); //地点H
t = CurrentTick();
while(CurrentTick()-t<25000){
migi_susumu(50);
}
migi_susumu(3);
sound_up(); //地点G
OnFwd(OUT_AC,30);
Wait(350);
hidari_susumu(3);
sound_down(); //地点S
t = CurrentTick();
while(CurrentTick()-t<1000){
hidari_susumu(10);
}
hidari_susumu(3);
sound_up(); //地点P
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(500);
OnFwd(OUT_AC,30);
Wait(400);
hidari_susumu(3);
sound_up(); //地点Q
OnFwd(OUT_AC,30); //機体を黒線の右側にする
Wait(600);
migi_susumu(3);
sound_up(); //地点F
t = CurrentTick();
while(CurrentTick()-t<1000){
migi_susumu(10);
}
migi_susumu(3);
OnFwd(OUT_A,30); //ゴール地点に入るため
OnRev(OUT_C,30);
Wait(200);
OnFwd(OUT_AC,30);
Wait(1300);
}
**なぜゴールできたのか [#m0c5c9ff]
今回の間違ったプログラムでゴールできた理由は、引数aの数が...
*総評 [#f177417a]
ロボット自体と黒線をトレースするプログラムは比較的すぐに...
終了行:
[[2017a/Member]]
#contents
*課題2 [#fb67d96f]
指定されたコースにそって動くロボットを作成する。詳しくは[...
&br;自分はE地点右折コースを選択した。
*ロボット [#w8699235]
ロボットの構造で工夫した点は、センサーの位置をタイヤの軸...
#ref(./ロボット.JPG,50%,ロボット);
#ref(./ロボット 横.JPG,50%,横から見た図);
*プログラム [#j9a2f0e9]
**総評 [#x49bb0b1]
結論から言うと、このプログラムは私の勘違いにより全体的に...
**プログラム [#z3043da6]
まず、関数を1つ作り、黒線の右側、左側をトレースするプログ...
&br;プログラムの内容は、変数aで何回機体が急激に右(左)に曲...
&br;ここでの問題点は、わざわざ引数を設定する必要がなかっ...
&br;
int a;
sub migi_susumu(int x) //黒線の右側をト...
{
a=0;
while(a<=x){
if(SENSOR_1>=55){
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_A,30);
Off(OUT_C);
}else if(SENSOR_1>=45){
OnFwd(OUT_C,30);
Off(OUT_A);
}else{
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
a=a+1;
}
}
}
sub hidari_susumu(int y) //黒線の左側を...
{
a=0;
while(a<=y){
if(SENSOR_1>=55){
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_C,30);
Off(OUT_A);
}else if(SENSOR_1>=45){
OnFwd(OUT_A,30);
Off(OUT_C);
}else{
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
a=a+1;
}
}
}
次に、音を鳴らすプログラムを定義する。
sub sound_down() //SOUND_DOWNを鳴ら...
{
PlaySound(SOUND_DOWN);
Off(OUT_AC);
Wait(1000);
}
sub sound_up() //SOUND_UPを鳴らす
{
PlaySound(SOUND_UP);
}
上記のサブルーチンを使って、メインのプログラムを書いた。
&br;途中のwhileの中は「曲がり始めやカーブなどを交差点と誤...
また、その後のmigi_susumu(3)も必要なかった。
今回のプログラムで引数に色々な数値が入っているのは、カー...
&br;また、交差点と認識した後のOnFwdやOnRevは、交差点を認...
task main()
{
SetSensorLight(S1);
OnFwd(OUT_AC,30); //スタート地点から出る...
Wait(600);
migi_susumu(3);
sound_up(); //地点E
OnFwd(OUT_AC,30); //機体を黒線の左側にする
Wait(350);
hidari_susumu(3);
sound_down(); //地点P
long t = CurrentTick();
while(CurrentTick()-t<1000){
hidari_susumu(10);
}
hidari_susumu(3);
sound_up(); //地点Q
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(500);
OnFwd(OUT_AC,30);
Wait(400);
hidari_susumu(3);
sound_up(); //地点R
t=CurrentTick();
while(CurrentTick()-t<1000){
hidari_susumu(10);
}
hidari_susumu(3);
sound_down(); //地点T
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(500);
OnFwd(OUT_AC,30);
Wait(400);
t = CurrentTick();
while(CurrentTick()-t<12000){
hidari_susumu(20);
}
hidari_susumu(3);
sound_down(); //地点T
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(600);
OnFwd(OUT_AC,30);
Wait(500);
migi_susumu(3);
sound_up(); //地点H
t = CurrentTick();
while(CurrentTick()-t<25000){
migi_susumu(50);
}
migi_susumu(3);
sound_up(); //地点G
OnFwd(OUT_AC,30);
Wait(350);
hidari_susumu(3);
sound_down(); //地点S
t = CurrentTick();
while(CurrentTick()-t<1000){
hidari_susumu(10);
}
hidari_susumu(3);
sound_up(); //地点P
OnFwd(OUT_C,30); //交差点を直進するため
OnRev(OUT_A,30);
Wait(500);
OnFwd(OUT_AC,30);
Wait(400);
hidari_susumu(3);
sound_up(); //地点Q
OnFwd(OUT_AC,30); //機体を黒線の右側にする
Wait(600);
migi_susumu(3);
sound_up(); //地点F
t = CurrentTick();
while(CurrentTick()-t<1000){
migi_susumu(10);
}
migi_susumu(3);
OnFwd(OUT_A,30); //ゴール地点に入るため
OnRev(OUT_C,30);
Wait(200);
OnFwd(OUT_AC,30);
Wait(1300);
}
**なぜゴールできたのか [#m0c5c9ff]
今回の間違ったプログラムでゴールできた理由は、引数aの数が...
*総評 [#f177417a]
ロボット自体と黒線をトレースするプログラムは比較的すぐに...
ページ名: