2019a/Member/kanrikan/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
目次
#contents
*課題について [#s7271e60]
課題3については,[[2019a/Mission3]]を参照してください.
*ロボットについて [#jd775774]
今回の課題では,NQCが2台使えたので,ロボットの移動,アー...
#ref(image4.jpeg)
上の画像は,ロボット全体を撮影したものである.三輪のタイ...
#ref(image5.jpeg)
上の画像は,アームを伸ばした時のロボットの全体を撮影した...
*プログラムについて [#v1e0b3cf]
今回のプログラムでは,本体を2台使うため,作業を順番通り...
**ロボットを移動させるプログラム [#f9053f9c]
***定義について [#j8dc9f92]
NQC2台の間で通信を行うため,2つの数字を定義した.
#define SIGNALON_C 39
#define SIGNALON_T 2
***サブルーチンについて [#oae16d7c]
sub black_R() //光センサー(...
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC);
Wait(100);}
else{OnRev(OUT_AC);
ClearTimer(0);}
}
}
sub black_L() //光センサー(...
{
while(FastTimer(0)<10)
{
if(SENSOR_1<37){Off(OUT_AC);
Wait(100);}
else{OnRev(OUT_AC);
ClearTimer(0);}
}
}
sub back() //光センサー(...
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC);
Wait(100);}
else{OnFwd(OUT_AC);
ClearTimer(0);}
}
}
***全体のプログラムについて [#b9acad38]
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
箱の横まで前進
ClearTimer(0);
black_R();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
black_R();
右回転→メッセージ送信
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
SendMessage(SIGNALON_C);
Off(OUT_AC);
Wait(1000);
左回転
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
最初の位置に戻る
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
左回転
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
空の箱の前まで前進→メッセージ送信
ClearTimer(0);
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T);
Off(OUT_AC);
Wait(1000);
スタートの位置に戻る
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
右回転
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
この後,同じ動きを繰り返す
ClearTimer(0);
black_R();
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
SendMessage(SIGNALON_C);
Off(OUT_AC);
Wait(1000);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0);
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T);
Off(OUT_AC);
Wait(1000);
ClearTimer(0);
back();
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
}
**アームのプログラム [#z4306c21]
***定義について [#a3ac492c]
移動用のNQCと同じ
#define SIGNALON_C 39
#define SIGNALON_T 2
***全体のプログラムについて [#o1d68c11]
task main()
{
ClearMessage();
39が送られてきた場合
while(true)
{
if(Message()==SIGNALON_C)
{
OnFwd(OUT_A);
Wait(50); //アームを下す
Off(OUT_A);
OnRev(OUT_B);
Wait(10); //ボールをつかむ
Off(OUT_B);
OnRev(OUT_A);
Wait(300); //アームを上げる
Off(OUT_A);
}
2が送られてきた場合
else if(Message()==SIGNALON_T)
{
OnFwd(OUT_A);
Wait(50); //アームを下す
Off(OUT_A);
OnFwd(OUT_B);
Wait(10); //ボールを離す
Off(OUT_B);
OnRev(OUT_A);
Wait(300); //アームを上げる
Off(OUT_A);}
}
}
*まとめと感想 [#z2e9a52f]
課題をクリアするための適切なロボットを決めるのに時間を割...
終了行:
[[2019a/Member]]
目次
#contents
*課題について [#s7271e60]
課題3については,[[2019a/Mission3]]を参照してください.
*ロボットについて [#jd775774]
今回の課題では,NQCが2台使えたので,ロボットの移動,アー...
#ref(image4.jpeg)
上の画像は,ロボット全体を撮影したものである.三輪のタイ...
#ref(image5.jpeg)
上の画像は,アームを伸ばした時のロボットの全体を撮影した...
*プログラムについて [#v1e0b3cf]
今回のプログラムでは,本体を2台使うため,作業を順番通り...
**ロボットを移動させるプログラム [#f9053f9c]
***定義について [#j8dc9f92]
NQC2台の間で通信を行うため,2つの数字を定義した.
#define SIGNALON_C 39
#define SIGNALON_T 2
***サブルーチンについて [#oae16d7c]
sub black_R() //光センサー(...
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC);
Wait(100);}
else{OnRev(OUT_AC);
ClearTimer(0);}
}
}
sub black_L() //光センサー(...
{
while(FastTimer(0)<10)
{
if(SENSOR_1<37){Off(OUT_AC);
Wait(100);}
else{OnRev(OUT_AC);
ClearTimer(0);}
}
}
sub back() //光センサー(...
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC);
Wait(100);}
else{OnFwd(OUT_AC);
ClearTimer(0);}
}
}
***全体のプログラムについて [#b9acad38]
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
箱の横まで前進
ClearTimer(0);
black_R();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
black_R();
右回転→メッセージ送信
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
SendMessage(SIGNALON_C);
Off(OUT_AC);
Wait(1000);
左回転
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
最初の位置に戻る
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
左回転
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
空の箱の前まで前進→メッセージ送信
ClearTimer(0);
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T);
Off(OUT_AC);
Wait(1000);
スタートの位置に戻る
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
右回転
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
この後,同じ動きを繰り返す
ClearTimer(0);
black_R();
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
SendMessage(SIGNALON_C);
Off(OUT_AC);
Wait(1000);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0);
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T);
Off(OUT_AC);
Wait(1000);
ClearTimer(0);
back();
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
}
**アームのプログラム [#z4306c21]
***定義について [#a3ac492c]
移動用のNQCと同じ
#define SIGNALON_C 39
#define SIGNALON_T 2
***全体のプログラムについて [#o1d68c11]
task main()
{
ClearMessage();
39が送られてきた場合
while(true)
{
if(Message()==SIGNALON_C)
{
OnFwd(OUT_A);
Wait(50); //アームを下す
Off(OUT_A);
OnRev(OUT_B);
Wait(10); //ボールをつかむ
Off(OUT_B);
OnRev(OUT_A);
Wait(300); //アームを上げる
Off(OUT_A);
}
2が送られてきた場合
else if(Message()==SIGNALON_T)
{
OnFwd(OUT_A);
Wait(50); //アームを下す
Off(OUT_A);
OnFwd(OUT_B);
Wait(10); //ボールを離す
Off(OUT_B);
OnRev(OUT_A);
Wait(300); //アームを上げる
Off(OUT_A);}
}
}
*まとめと感想 [#z2e9a52f]
課題をクリアするための適切なロボットを決めるのに時間を割...
ページ名: