2017a/Member/ejj/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
目次
#contents
*課題について [#sf1e746c]
2つ目の課題は次の経路を黒い線にそって動くロボットを作成...
&ref(2017a/Member/ejj/Mission2/pic_ejj9.JPG,100%,);
Aスタート→E直進→F(SOUND_UP)→Q一時停止(SOUND_DOWN)&左折→R...
ただし、
?なるべく速く正確に動くロボットになるように工夫するこ...
?一時停止の交差点および丁字路ではSOUND_DOWNを鳴らした...
?直角コーナーおよび一時停止が不要は丁字路ではSOUND_UP...
。
?ロボットはサイズは、幅15cm長さ18cm以内とする(高さは...
?交差点、丁字路、直角コーナーについては、差し掛かった...
というのが条件だった。
*ロボットの説明 [#tbb73ed0]
半径の小さな曲線もなるべく容易に曲がれるようにモーターの...
&ref(2017a/Member/ejj/Mission2/pic_ejj10.JPG,100%,);
&ref(2017a/Member/ejj/Mission2/pic_ejj11.JPG,100%,);
&ref(2017a/Member/ejj/Mission2/pic_ejj12.JPG,100%,);
*プログラムの説明 [#af311e06]
**定義 [#z17b8dc5]
#define BLACK 39 //これより...
#define BLACK_gray 42
#define GRAY 45
#define WHITE_gray 48
#define WHITE 50 //これより...
#define RIGHT_S OnFwd(OUT_A); OnRev(OUT_C); //右旋回
#define LEFT_S OnFwd(OUT_C); OnRev(OUT_A); //左旋回
#define RIGHT_K OnFwd(OUT_A); Off(OUT_C); //右回転
#define LEFT_K OnFwd(OUT_C); Off(OUT_A); //左回転
#define GO_FORWARD OnFwd(OUT_AC); //前進1
#define GO_FORWARD2(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC)...
**サブルーチン [#e1da1893]
ライントレースのサブルーチン1。90度に交わる交差点を認識...
sub LINE1a()
{
ClearTimer(0);
while(FastTimer(0)<22)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
Off (OUT_AC);
PlaySound(SOUND_UP);
}
ライントレースのサブルーチン2。90度以上の角度で交わる交...
sub LINE1b()
{
ClearTimer(0);
while(FastTimer(0)<19)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
Off (OUT_AC);
PlaySound(SOUND_UP);
}
ライントレースのサブルーチン3。音を鳴らさずに次のプログ...
sub LINE1c()
{
ClearTimer(0);
while(FastTimer(0)<22)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
}
ライントレースのサブルーチン4。交差点を認識して音(SOUND...
sub LINE2()
{
ClearTimer(0);
while(FastTimer(0)<22)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
Off (OUT_AC);
PlaySound(SOUND_DOWN);
Wait(100);
}
0.8秒左旋回するサブルーチン。
sub CROSS_LEFT1()
{
while(FastTimer(0) < 80) {
LEFT_S;
}
ClearTimer(0);
}
2.2秒左回転するサブルーチン。
sub CROSS_LEFT2()
{
while(FastTimer(0) < 220) {
LEFT_K;
}
ClearTimer(0);
}
1.2秒左回転するサブルーチン。
sub CROSS_LEFT3()
{
while(FastTimer(0) < 120) {
LEFT_K;
}
ClearTimer(0);
}
0.8秒右回転するサブルーチン。
sub CROSS_RIGHT()
{
while(FastTimer(0) < 80) {
RIGHT_K;
}
ClearTimer(0);
}
**タスクメイン [#p3728ba6]
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
LINE1a(); //Fまで
CROSS_LEFT1();
LINE2(); //Qまで
CROSS_LEFT2();
LINE1b(); //Rまで
CROSS_RIGHT();
LINE1b(); //Sまで
CROSS_LEFT3();
LINE1a(); //Gまで
CROSS_LEFT3();
LINE1c();
CROSS_LEFT1();
LINE1c();
CROSS_LEFT1();
LINE1c();
CROSS_LEFT1();
LINE1a(); //Hまで
CROSS_LEFT2();
LINE2(); //T(一回目)まで
GO_FORWARD2(30);
LINE2(); //T(二回目)まで
GO_FORWARD2(30);
LINE2(); //Rまで
CROSS_LEFT2();
LINE1b(); //Sまで
CROSS_RIGHT();
LINE1b(); //Pまで
CROSS_LEFT3();
LINE2(); //Eまで
CROSS_LEFT3();
LINE2(); //ゴール
}
*まとめ[#r040aa97]
**感想 [#pb79b8c0]
今回の課題は前回とは違い、ロボットは非常にスムーズに作成...
**反省 [#zbfaba39]
このロボットは不完全でゴールまでたどり着けない時もたまに...
終了行:
[[2017a/Member]]
目次
#contents
*課題について [#sf1e746c]
2つ目の課題は次の経路を黒い線にそって動くロボットを作成...
&ref(2017a/Member/ejj/Mission2/pic_ejj9.JPG,100%,);
Aスタート→E直進→F(SOUND_UP)→Q一時停止(SOUND_DOWN)&左折→R...
ただし、
?なるべく速く正確に動くロボットになるように工夫するこ...
?一時停止の交差点および丁字路ではSOUND_DOWNを鳴らした...
?直角コーナーおよび一時停止が不要は丁字路ではSOUND_UP...
。
?ロボットはサイズは、幅15cm長さ18cm以内とする(高さは...
?交差点、丁字路、直角コーナーについては、差し掛かった...
というのが条件だった。
*ロボットの説明 [#tbb73ed0]
半径の小さな曲線もなるべく容易に曲がれるようにモーターの...
&ref(2017a/Member/ejj/Mission2/pic_ejj10.JPG,100%,);
&ref(2017a/Member/ejj/Mission2/pic_ejj11.JPG,100%,);
&ref(2017a/Member/ejj/Mission2/pic_ejj12.JPG,100%,);
*プログラムの説明 [#af311e06]
**定義 [#z17b8dc5]
#define BLACK 39 //これより...
#define BLACK_gray 42
#define GRAY 45
#define WHITE_gray 48
#define WHITE 50 //これより...
#define RIGHT_S OnFwd(OUT_A); OnRev(OUT_C); //右旋回
#define LEFT_S OnFwd(OUT_C); OnRev(OUT_A); //左旋回
#define RIGHT_K OnFwd(OUT_A); Off(OUT_C); //右回転
#define LEFT_K OnFwd(OUT_C); Off(OUT_A); //左回転
#define GO_FORWARD OnFwd(OUT_AC); //前進1
#define GO_FORWARD2(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC)...
**サブルーチン [#e1da1893]
ライントレースのサブルーチン1。90度に交わる交差点を認識...
sub LINE1a()
{
ClearTimer(0);
while(FastTimer(0)<22)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
Off (OUT_AC);
PlaySound(SOUND_UP);
}
ライントレースのサブルーチン2。90度以上の角度で交わる交...
sub LINE1b()
{
ClearTimer(0);
while(FastTimer(0)<19)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
Off (OUT_AC);
PlaySound(SOUND_UP);
}
ライントレースのサブルーチン3。音を鳴らさずに次のプログ...
sub LINE1c()
{
ClearTimer(0);
while(FastTimer(0)<22)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
}
ライントレースのサブルーチン4。交差点を認識して音(SOUND...
sub LINE2()
{
ClearTimer(0);
while(FastTimer(0)<22)
{
if(SENSOR_2>=WHITE){RIGHT_S;ClearTimer(0);}
else if(SENSOR_2>=WHITE_gray){RIGHT_K;ClearTimer(0);}
else if(SENSOR_2>=GRAY){GO_FORWARD;ClearTimer(0);}
else if(SENSOR_2>=BLACK_gray){LEFT_K;ClearTimer(0);}
else{LEFT_S;}
}
Off (OUT_AC);
PlaySound(SOUND_DOWN);
Wait(100);
}
0.8秒左旋回するサブルーチン。
sub CROSS_LEFT1()
{
while(FastTimer(0) < 80) {
LEFT_S;
}
ClearTimer(0);
}
2.2秒左回転するサブルーチン。
sub CROSS_LEFT2()
{
while(FastTimer(0) < 220) {
LEFT_K;
}
ClearTimer(0);
}
1.2秒左回転するサブルーチン。
sub CROSS_LEFT3()
{
while(FastTimer(0) < 120) {
LEFT_K;
}
ClearTimer(0);
}
0.8秒右回転するサブルーチン。
sub CROSS_RIGHT()
{
while(FastTimer(0) < 80) {
RIGHT_K;
}
ClearTimer(0);
}
**タスクメイン [#p3728ba6]
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
LINE1a(); //Fまで
CROSS_LEFT1();
LINE2(); //Qまで
CROSS_LEFT2();
LINE1b(); //Rまで
CROSS_RIGHT();
LINE1b(); //Sまで
CROSS_LEFT3();
LINE1a(); //Gまで
CROSS_LEFT3();
LINE1c();
CROSS_LEFT1();
LINE1c();
CROSS_LEFT1();
LINE1c();
CROSS_LEFT1();
LINE1a(); //Hまで
CROSS_LEFT2();
LINE2(); //T(一回目)まで
GO_FORWARD2(30);
LINE2(); //T(二回目)まで
GO_FORWARD2(30);
LINE2(); //Rまで
CROSS_LEFT2();
LINE1b(); //Sまで
CROSS_RIGHT();
LINE1b(); //Pまで
CROSS_LEFT3();
LINE2(); //Eまで
CROSS_LEFT3();
LINE2(); //ゴール
}
*まとめ[#r040aa97]
**感想 [#pb79b8c0]
今回の課題は前回とは違い、ロボットは非常にスムーズに作成...
**反省 [#zbfaba39]
このロボットは不完全でゴールまでたどり着けない時もたまに...
ページ名: