2019a/Member/mistral/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
#contents
*課題 [#ae5624f6]
課題については[[2019a/Mission3]]を参照。
*ロボットについて [#na1bfbb0]
#ref(2019a/Member/mistral/Mission3/ロボ1.jpg,20%,コース);
#ref(2019a/Member/mistral/Mission3/robo4.jpg,20%,コース);
主に土台部分、アーム部分を担当するRISの2つからなり、通信...
**作戦 [#m0b9db8d]
思い描いていた動きの説明する。
#ref(2019a/Member/mistral/Mission3/コース1.png,20%,コース);
#ref(2019a/Member/mistral/Mission3/コース2.png,20%,コース);
#ref(2019a/Member/mistral/Mission3/コース3.png,20%,コース);
#ref(2019a/Member/mistral/Mission3/コース4.png,20%,コース);
1,右の光センサーを使い、箱の横で止まるようにする。~
2,90度右に回転し、上の本体にセンサーを送る。(上のRISに...
3,数秒止まった後、90度左に回転。~
4,右のセンサーを使い、スタートの位置まで戻る。~
5,90度左に回転する。~
6,左のセンサーを使い、空の箱の前で止まる。上の本体にセン...
7,8,右のセンサーを使い、スタートの位置に戻り右に90度回転...
この動きを繰り返すことで箱の中の玉を2つとも運ぼうと考えた。
*プログラミング [#n502a285]
今回の課題では今までの課題で使用してきた光センサーやdefin...
まずは土台のプログラミングの説明をする。~
最初に2つのRISの間での通信に使う数字を決める。
#define SIGNALON_C 39
#define SIGNALON_T 2
次にサブルーチンで左右の光センサーを使い、前進と後退する...
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);}
}
}
ここから動きのプログラム
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
1の動き
ClearTimer(0);
black_R();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
black_R();
2の動き
OnFwd(OUT_C); //ここから
OnRev(OUT_A);
Wait(55);
Off(OUT_AC); //ここまでが右回転
Wait(100);
SendMessage(SIGNALON_C);
Off(OUT_AC);
Wait(1000);
3の動き
OnFwd(OUT_A); //ここから
OnRev(OUT_C);
Wait(60);
Off(OUT_AC); //ここまでが左回転
Wait(100);
4の動き
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
5の動き
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
6の動き
ClearTimer(0);
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T);
Off(OUT_AC);
Wait(1000);
7の動き
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
8の動き
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);
}
上のRIS
#define SIGNALON_C 39
#define SIGNALON_T 2
task main()
{
ClearMessage();
while(true)
{
if(Message()==SIGNALON_C) //39が送られてきた...
{
OnFwd(OUT_A); //アームを降ろす
Wait(50);
Off(OUT_A);
OnRev(OUT_B); //アームを閉じる
Wait(10);
Off(OUT_B);
OnRev(OUT_A); //アームを挙げる
Wait(300);
Off(OUT_A);}
else if(Message()==SIGNALON_T) //2が送られてきたと...
{
OnFwd(OUT_A);
Wait(50);
Off(OUT_A);
OnFwd(OUT_B); //アームを開く
Wait(10);
Off(OUT_B);
OnRev(OUT_A);
Wait(300);
Off(OUT_A);}
}
}
*問題点 [#j594fd46]
-機体の動きが速すぎるため黒を感知しないときがある。
-RISを縦に積んだため通信がうまく行えずクレーンが動かない。
-上のRISに数字を送ってみるとwhileの中の動きを繰り返し行っ...
-右回転、左回転も定義しておけば、もう少し短いプログラミン...
*まとめと感想 [#z9aef7c5]
下の土台の動きに苦戦していたためクレーンの動きにあまり時...
*・・・ [#p0a350ef]
センサーを2つつけたのには、安定して黒を判断できるようにす...
終了行:
[[2019a/Member]]
#contents
*課題 [#ae5624f6]
課題については[[2019a/Mission3]]を参照。
*ロボットについて [#na1bfbb0]
#ref(2019a/Member/mistral/Mission3/ロボ1.jpg,20%,コース);
#ref(2019a/Member/mistral/Mission3/robo4.jpg,20%,コース);
主に土台部分、アーム部分を担当するRISの2つからなり、通信...
**作戦 [#m0b9db8d]
思い描いていた動きの説明する。
#ref(2019a/Member/mistral/Mission3/コース1.png,20%,コース);
#ref(2019a/Member/mistral/Mission3/コース2.png,20%,コース);
#ref(2019a/Member/mistral/Mission3/コース3.png,20%,コース);
#ref(2019a/Member/mistral/Mission3/コース4.png,20%,コース);
1,右の光センサーを使い、箱の横で止まるようにする。~
2,90度右に回転し、上の本体にセンサーを送る。(上のRISに...
3,数秒止まった後、90度左に回転。~
4,右のセンサーを使い、スタートの位置まで戻る。~
5,90度左に回転する。~
6,左のセンサーを使い、空の箱の前で止まる。上の本体にセン...
7,8,右のセンサーを使い、スタートの位置に戻り右に90度回転...
この動きを繰り返すことで箱の中の玉を2つとも運ぼうと考えた。
*プログラミング [#n502a285]
今回の課題では今までの課題で使用してきた光センサーやdefin...
まずは土台のプログラミングの説明をする。~
最初に2つのRISの間での通信に使う数字を決める。
#define SIGNALON_C 39
#define SIGNALON_T 2
次にサブルーチンで左右の光センサーを使い、前進と後退する...
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);}
}
}
ここから動きのプログラム
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
1の動き
ClearTimer(0);
black_R();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
black_R();
2の動き
OnFwd(OUT_C); //ここから
OnRev(OUT_A);
Wait(55);
Off(OUT_AC); //ここまでが右回転
Wait(100);
SendMessage(SIGNALON_C);
Off(OUT_AC);
Wait(1000);
3の動き
OnFwd(OUT_A); //ここから
OnRev(OUT_C);
Wait(60);
Off(OUT_AC); //ここまでが左回転
Wait(100);
4の動き
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
5の動き
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
6の動き
ClearTimer(0);
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T);
Off(OUT_AC);
Wait(1000);
7の動き
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
8の動き
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);
}
上のRIS
#define SIGNALON_C 39
#define SIGNALON_T 2
task main()
{
ClearMessage();
while(true)
{
if(Message()==SIGNALON_C) //39が送られてきた...
{
OnFwd(OUT_A); //アームを降ろす
Wait(50);
Off(OUT_A);
OnRev(OUT_B); //アームを閉じる
Wait(10);
Off(OUT_B);
OnRev(OUT_A); //アームを挙げる
Wait(300);
Off(OUT_A);}
else if(Message()==SIGNALON_T) //2が送られてきたと...
{
OnFwd(OUT_A);
Wait(50);
Off(OUT_A);
OnFwd(OUT_B); //アームを開く
Wait(10);
Off(OUT_B);
OnRev(OUT_A);
Wait(300);
Off(OUT_A);}
}
}
*問題点 [#j594fd46]
-機体の動きが速すぎるため黒を感知しないときがある。
-RISを縦に積んだため通信がうまく行えずクレーンが動かない。
-上のRISに数字を送ってみるとwhileの中の動きを繰り返し行っ...
-右回転、左回転も定義しておけば、もう少し短いプログラミン...
*まとめと感想 [#z9aef7c5]
下の土台の動きに苦戦していたためクレーンの動きにあまり時...
*・・・ [#p0a350ef]
センサーを2つつけたのには、安定して黒を判断できるようにす...
ページ名: