2017a/Member/Ryo24/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題の概要 [#v1987f47]
詳しくはこちら→[[課題2:http://yakushi.shinshu-u.ac.jp/r...
#ref(2017a/Member/Ryo24/Mission2/IMG_6136.PNG,100%,コース)
*ロボットの説明 [#t0a6e2fe]
#ref(2017a/Member/Ryo24/Mission2/IMG_6135.JPG,100%,ロボ本...
今回の課題2はプログラムメインの課題なので、ロボットはそ...
#ref(2017a/Member/Ryo24/Mission2/IMG_6107.JPG,100%,ロボ本...
当初、より小さい黄色のタイヤを使用しようとしたが、なぜ...
*プログラムの説明 [#c7dd6b10]
走行したコースはA→E→F→Q→R→S→G→H→T→T→R→S→P→E→A
**マクロ・定数 [#c4fd64b2]
#define THRESHOLD 45 //境45
#define Go OnFwd(OUT_AC);//前進
#define Back OnRev(OUT_AC);//後退
#define Stop Off(OUT_AC);//停止
#define Right OnFwd(OUT_C);Off(OUT_A);//右回転
#define RightQ OnFwd(OUT_C);OnRev(OUT_A);//右旋回
#define Left OnFwd(OUT_A);Off(OUT_C);//左回転
#define LeftQ OnFwd(OUT_A);OnRev(OUT_C);//左旋回
#define nMAX 25//連続値25と定義
#define judge Off(OUT_AC);Wait(100); //ジャッジメント
#define Lo SetPower(OUT_AC,0);//超低速
境の値は計測して最も安定した45とした。ジャッジメントとい...
**サブルーチン [#ha014f3f]
以下の5つのサブルーチンは交差点判断型プログラムに属する
sub L() //L字直交路通過プログラム
{
Lo;
PlaySound(SOUND_UP);//サウンドアップ
RightQ;
Wait(110);
Go;Wait(30);
ClearTimer(1);//タイマーリセット
Stop(30);
}
これは名の通りF、G、H地点のようなL字カーブで動作する
sub Y() //環状路通過プログラム(環状路手前がYの形に見え...
{
Lo;
judge;
PlaySound(SOUND_DOWN);//サウンドダウン
RightQ;
Wait(110);
Go;Wait(50);
Stop(30);
ClearTimer(1);
}
環状路手前で止まってサウンド鳴らして動くプログラム
sub traverse() //交差点通過プログラム
{
Lo;
PlaySound(SOUND_UP);
Go;
Wait(40);
Stop(30);
ClearTimer(1);
}
sub traverse2() //交差点通過プログラム(一時停止)
{
Lo;
judge;
PlaySound(SOUND_DOWN);
Go;
Wait(40);
Stop(30);
ClearTimer(1);
}
sub LQ() //緩めカーブ通過プログラム
{
Lo;
PlaySound(SOUND_UP);
Right;
Wait(120);
Stop(30);
ClearTimer(1);
}
#ref(2017a/Member/Ryo24/Mission2/IMG_6143.PNG,100%,交差点...
これら5つのプログラムは全て同じ原理である。青い線を進行...
sub Curve() //急カーブ通過プログラム
{
Lo;
PlaySound(SOUND_UP);
until(SENSOR_2<=THRESHOLD+7);//ホワイトゾーン左旋回
RightQ;Wait(150);
Go;Wait(30);
ClearTimer(1);
}
交差点判断を応用してuntilを使用してホワイトゾーン左旋回を...
以下がライントレース用サブルーチン
sub Line() //ライントレース
{
Lo;
start play_music() //La Campanella...
ClearTimer(0); //タイマーリセ...
while(FastTimer(0)<nMAX) //タイマーがnMA...
{
if(SENSOR_2<THRESHOLD-5){ //ブラッ...
Right;
}else if(SENSOR_2<THRESHOLD-3){ //ブラッ...
RightQ;
}else if(SENSOR_2<=THRESHOLD){ //境界上...
Go;
}else if(SENSOR_2<THRESHOLD+7){ //ホワイ...
LeftQ;
}else{ //それ以...
Left;
if(SENSOR_2>THRESHOLD-8){ //リセット
ClearTimer(0);
}
}
}
#ref(2017a/Member/Ryo24/Mission2/IMG_6142.PNG,100%,ライン...
以下の図のように線ごとに値を決めている。中央を45とし、...
**メインプログラム [#fbc3bd83]
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(1); //タイ...
int t=0; // グロ...
Go;Wait(200); //最初...
while(t<13) //t=12...
{
Lo;
if(Timer(1)>250&&t==0) ...
{
t++; ...
L();
}
else if(Timer(1)>11&&t==1) ...
{
t++;
Y();
}
else if(Timer(1)>20&&t==2) ...
{
t++;
traverse();
}
else if(Timer(1)>20&&t==3) ...
{
t++;
L();
}
else if(Timer(1)>30&&t==4) /...
{
t++;
L();
}
else if(Timer(1)>30&&t==5) //...
{
t++;
Curve();
}
else if(Timer(1)>130&&t==6) //...
{
t++;
L();
}
else if(Timer(1)>20&&t==7) //T...
{
t++;
traverse2();
}
else if(Timer(1)>80&&t==8) //2...
{
t++;
traverse2();
}
else if(Timer(1)>25&&t==9) //環...
{
t++;
Y();
}
else if(Timer(1)>25&&t==10) //S
{
t++;
traverse();
}
else if(Timer(1)>12&&t==11) //P
{
t++;
LQ();
}
else if(Timer(1)>25&&t==12) //区...
{
start play_music_coda ...
L();
Go;Wait(60); ...
Right;Wait(40); //向きを補正して直...
Go;Wait(240);
Stop;Wait(100);
t++;
}
else
{
Line();
} //普段はライントレース
}
Stop;PlaySound(SOUND_DOWN); //ゴールで歓...
}
ここでtを使用して交差点判断型プログラム使用回数を数える...
*おまけ:Liszt作曲 La Campanella(Grandes Etudes de paga...
ここからは完全に自己満足の世界。なぜこの曲を選んだのか...
**ピッチ [#mabdfc24]
sは#(#は使用出来なかったので...)、数字はオクターブ区別...
#define Gs0 415
#define A0 440
#define As0 466
#define B0 494
#define C0 523
#define Cs 554
#define D 554
#define Ds 622
#define E 659
#define F 698
#define Fs 740
#define G 784
#define Gs 831
#define A 880
#define As 932
#define B 988
#define C 1047
#define Cs1 1108
#define D1 1174
#define Ds1 1244
#define E1 1318
#define F1 1396
#define Fs1 1479
#define G1 1567
#define Gs1 1661
#define A1 760
#define As1 1864
#define B1 1975
#define C2 2093
#define Cs2 2217
#define Ds2 2489
**主題 [#l79463d1]
ライントレース中に演奏
#ref(2017a/Member/Ryo24/Mission2/IMG_6114.JPG,100%,主題)
task play_music()
{
while(true)
{
PlayTone(Ds2,15);Wait(25); //1小節目
PlayTone(Ds2,15);Wait(25);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(As1,15);Wait(25);
PlayTone(Gs1,15);Wait(25);
PlayTone(G1,15); Wait(25);
PlayTone(Gs1,15);Wait(25); //2小節目
PlayTone(As1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(E1,15); Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Cs1,15);Wait(25);
PlayTone(B,15); Wait(25);
PlayTone(B,15); Wait(25); //3小節目
PlayTone(As,15); Wait(25);
PlayTone(Gs,15); Wait(25);
PlayTone(G,15); Wait(25);
PlayTone(Gs,15); Wait(25);
PlayTone(As,15); Wait(25);
PlayTone(Ds,15); Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Ds2,15);Wait(25); //4小節目
PlayTone(Ds2,15);Wait(25);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(As1,15);Wait(25);
PlayTone(Gs1,15);Wait(25);
PlayTone(G1,15); Wait(25);
PlayTone(Gs1,15);Wait(25); //5小節目
PlayTone(As1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(E1,15); Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Cs1,15);Wait(25);
PlayTone(Ds1,15);Wait(25); //6小節目
PlayTone(Gs1,10);Wait(12);
PlayTone(B1,10); Wait(12);
PlayTone(Ds2,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(G,10); Wait(12); //7小節目
PlayTone(As1,10);Wait(12);
PlayTone(Ds2,15);Wait(25);
PlayTone(Gs1,90);Wait(100);
}
}
**コーダ [#y3c911db]
ゴール手前の区間で演奏
#ref(2017a/Member/Ryo24/Mission2/IMG_6134.JPG,100%,コーダ)
task play_music_coda()
{
PlayTone(B1,15); Wait(25); //1小節目
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12); //2小節目
PlayTone(Cs2,7); Wait(12);
PlayTone(Ds2,15);Wait(25);
PlayTone(Cs2,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25); //3小節目
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(25);
PlayTone(B1,15); Wait(25); //4小節目
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12); //5小節目
PlayTone(Cs2,7); Wait(12);
PlayTone(Ds2,7); Wait(25);
PlayTone(Cs2,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25); //6小節目
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(25);
PlayTone(B1,7); Wait(12); //7小節目
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(25);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(100); //8小節目
}
*考察 [#gb6231b8]
結果については最後まで完走させることが出来てよかった。...
終了行:
#contents
*課題の概要 [#v1987f47]
詳しくはこちら→[[課題2:http://yakushi.shinshu-u.ac.jp/r...
#ref(2017a/Member/Ryo24/Mission2/IMG_6136.PNG,100%,コース)
*ロボットの説明 [#t0a6e2fe]
#ref(2017a/Member/Ryo24/Mission2/IMG_6135.JPG,100%,ロボ本...
今回の課題2はプログラムメインの課題なので、ロボットはそ...
#ref(2017a/Member/Ryo24/Mission2/IMG_6107.JPG,100%,ロボ本...
当初、より小さい黄色のタイヤを使用しようとしたが、なぜ...
*プログラムの説明 [#c7dd6b10]
走行したコースはA→E→F→Q→R→S→G→H→T→T→R→S→P→E→A
**マクロ・定数 [#c4fd64b2]
#define THRESHOLD 45 //境45
#define Go OnFwd(OUT_AC);//前進
#define Back OnRev(OUT_AC);//後退
#define Stop Off(OUT_AC);//停止
#define Right OnFwd(OUT_C);Off(OUT_A);//右回転
#define RightQ OnFwd(OUT_C);OnRev(OUT_A);//右旋回
#define Left OnFwd(OUT_A);Off(OUT_C);//左回転
#define LeftQ OnFwd(OUT_A);OnRev(OUT_C);//左旋回
#define nMAX 25//連続値25と定義
#define judge Off(OUT_AC);Wait(100); //ジャッジメント
#define Lo SetPower(OUT_AC,0);//超低速
境の値は計測して最も安定した45とした。ジャッジメントとい...
**サブルーチン [#ha014f3f]
以下の5つのサブルーチンは交差点判断型プログラムに属する
sub L() //L字直交路通過プログラム
{
Lo;
PlaySound(SOUND_UP);//サウンドアップ
RightQ;
Wait(110);
Go;Wait(30);
ClearTimer(1);//タイマーリセット
Stop(30);
}
これは名の通りF、G、H地点のようなL字カーブで動作する
sub Y() //環状路通過プログラム(環状路手前がYの形に見え...
{
Lo;
judge;
PlaySound(SOUND_DOWN);//サウンドダウン
RightQ;
Wait(110);
Go;Wait(50);
Stop(30);
ClearTimer(1);
}
環状路手前で止まってサウンド鳴らして動くプログラム
sub traverse() //交差点通過プログラム
{
Lo;
PlaySound(SOUND_UP);
Go;
Wait(40);
Stop(30);
ClearTimer(1);
}
sub traverse2() //交差点通過プログラム(一時停止)
{
Lo;
judge;
PlaySound(SOUND_DOWN);
Go;
Wait(40);
Stop(30);
ClearTimer(1);
}
sub LQ() //緩めカーブ通過プログラム
{
Lo;
PlaySound(SOUND_UP);
Right;
Wait(120);
Stop(30);
ClearTimer(1);
}
#ref(2017a/Member/Ryo24/Mission2/IMG_6143.PNG,100%,交差点...
これら5つのプログラムは全て同じ原理である。青い線を進行...
sub Curve() //急カーブ通過プログラム
{
Lo;
PlaySound(SOUND_UP);
until(SENSOR_2<=THRESHOLD+7);//ホワイトゾーン左旋回
RightQ;Wait(150);
Go;Wait(30);
ClearTimer(1);
}
交差点判断を応用してuntilを使用してホワイトゾーン左旋回を...
以下がライントレース用サブルーチン
sub Line() //ライントレース
{
Lo;
start play_music() //La Campanella...
ClearTimer(0); //タイマーリセ...
while(FastTimer(0)<nMAX) //タイマーがnMA...
{
if(SENSOR_2<THRESHOLD-5){ //ブラッ...
Right;
}else if(SENSOR_2<THRESHOLD-3){ //ブラッ...
RightQ;
}else if(SENSOR_2<=THRESHOLD){ //境界上...
Go;
}else if(SENSOR_2<THRESHOLD+7){ //ホワイ...
LeftQ;
}else{ //それ以...
Left;
if(SENSOR_2>THRESHOLD-8){ //リセット
ClearTimer(0);
}
}
}
#ref(2017a/Member/Ryo24/Mission2/IMG_6142.PNG,100%,ライン...
以下の図のように線ごとに値を決めている。中央を45とし、...
**メインプログラム [#fbc3bd83]
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(1); //タイ...
int t=0; // グロ...
Go;Wait(200); //最初...
while(t<13) //t=12...
{
Lo;
if(Timer(1)>250&&t==0) ...
{
t++; ...
L();
}
else if(Timer(1)>11&&t==1) ...
{
t++;
Y();
}
else if(Timer(1)>20&&t==2) ...
{
t++;
traverse();
}
else if(Timer(1)>20&&t==3) ...
{
t++;
L();
}
else if(Timer(1)>30&&t==4) /...
{
t++;
L();
}
else if(Timer(1)>30&&t==5) //...
{
t++;
Curve();
}
else if(Timer(1)>130&&t==6) //...
{
t++;
L();
}
else if(Timer(1)>20&&t==7) //T...
{
t++;
traverse2();
}
else if(Timer(1)>80&&t==8) //2...
{
t++;
traverse2();
}
else if(Timer(1)>25&&t==9) //環...
{
t++;
Y();
}
else if(Timer(1)>25&&t==10) //S
{
t++;
traverse();
}
else if(Timer(1)>12&&t==11) //P
{
t++;
LQ();
}
else if(Timer(1)>25&&t==12) //区...
{
start play_music_coda ...
L();
Go;Wait(60); ...
Right;Wait(40); //向きを補正して直...
Go;Wait(240);
Stop;Wait(100);
t++;
}
else
{
Line();
} //普段はライントレース
}
Stop;PlaySound(SOUND_DOWN); //ゴールで歓...
}
ここでtを使用して交差点判断型プログラム使用回数を数える...
*おまけ:Liszt作曲 La Campanella(Grandes Etudes de paga...
ここからは完全に自己満足の世界。なぜこの曲を選んだのか...
**ピッチ [#mabdfc24]
sは#(#は使用出来なかったので...)、数字はオクターブ区別...
#define Gs0 415
#define A0 440
#define As0 466
#define B0 494
#define C0 523
#define Cs 554
#define D 554
#define Ds 622
#define E 659
#define F 698
#define Fs 740
#define G 784
#define Gs 831
#define A 880
#define As 932
#define B 988
#define C 1047
#define Cs1 1108
#define D1 1174
#define Ds1 1244
#define E1 1318
#define F1 1396
#define Fs1 1479
#define G1 1567
#define Gs1 1661
#define A1 760
#define As1 1864
#define B1 1975
#define C2 2093
#define Cs2 2217
#define Ds2 2489
**主題 [#l79463d1]
ライントレース中に演奏
#ref(2017a/Member/Ryo24/Mission2/IMG_6114.JPG,100%,主題)
task play_music()
{
while(true)
{
PlayTone(Ds2,15);Wait(25); //1小節目
PlayTone(Ds2,15);Wait(25);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(As1,15);Wait(25);
PlayTone(Gs1,15);Wait(25);
PlayTone(G1,15); Wait(25);
PlayTone(Gs1,15);Wait(25); //2小節目
PlayTone(As1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(E1,15); Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Cs1,15);Wait(25);
PlayTone(B,15); Wait(25);
PlayTone(B,15); Wait(25); //3小節目
PlayTone(As,15); Wait(25);
PlayTone(Gs,15); Wait(25);
PlayTone(G,15); Wait(25);
PlayTone(Gs,15); Wait(25);
PlayTone(As,15); Wait(25);
PlayTone(Ds,15); Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Ds2,15);Wait(25); //4小節目
PlayTone(Ds2,15);Wait(25);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(B1,15); Wait(25);
PlayTone(As1,15);Wait(25);
PlayTone(Gs1,15);Wait(25);
PlayTone(G1,15); Wait(25);
PlayTone(Gs1,15);Wait(25); //5小節目
PlayTone(As1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(E1,15); Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(Cs1,15);Wait(25);
PlayTone(Ds1,15);Wait(25); //6小節目
PlayTone(Gs1,10);Wait(12);
PlayTone(B1,10); Wait(12);
PlayTone(Ds2,15);Wait(25);
PlayTone(Ds1,15);Wait(25);
PlayTone(G,10); Wait(12); //7小節目
PlayTone(As1,10);Wait(12);
PlayTone(Ds2,15);Wait(25);
PlayTone(Gs1,90);Wait(100);
}
}
**コーダ [#y3c911db]
ゴール手前の区間で演奏
#ref(2017a/Member/Ryo24/Mission2/IMG_6134.JPG,100%,コーダ)
task play_music_coda()
{
PlayTone(B1,15); Wait(25); //1小節目
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12); //2小節目
PlayTone(Cs2,7); Wait(12);
PlayTone(Ds2,15);Wait(25);
PlayTone(Cs2,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25); //3小節目
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(25);
PlayTone(B1,15); Wait(25); //4小節目
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12); //5小節目
PlayTone(Cs2,7); Wait(12);
PlayTone(Ds2,7); Wait(25);
PlayTone(Cs2,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(Cs2,15);Wait(25); //6小節目
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(25);
PlayTone(B1,7); Wait(12); //7小節目
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(25);
PlayTone(B1,7); Wait(12);
PlayTone(As1,7); Wait(12);
PlayTone(Gs1,10);Wait(100); //8小節目
}
*考察 [#gb6231b8]
結果については最後まで完走させることが出来てよかった。...
ページ名: