2014a/Member/gamigami/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*メンバー [#xd718c18]
an
gomibakudan
nozomigo
gamigami
*機構 [#b134b320]
**本体の写真 [#oad05d8b]
***コップを重ねる方の機体(本体) [#ua2b1745]
#ref(2014a/Member/gamigami/Mission2/main1.jpg,25%,機体の...
・ギアを回してアームを閉じる
・コップを掴むとアーム部分が上がり,紙コップを持ち上げる...
※この後にアームの改良を加えたので多少アームの形は変わる
アームの黒いパーツを上に付け、アーム部分のタイヤそれぞれ...
***ライントレースに使う光センサー [#u0045b7e]
#ref(2014a/Member/gamigami/Mission2/main2.jpg,25%,機体の...
・両サイドに光センサーを付けることで二か所で判別できるよ...
・その後のかいりょうで光センサーを多少ずらして付け、判別...
***紙コップの判別に使う光センサー [#ida116ff]
#ref(2014a/Member/gamigami/Mission2/main3.jpg,25%,機体の...
・アームを開いている時、紙コップを持ち上げた時、紙コップ...
・アームが下りている時も光センサーが邪魔にならないように...
**コップをずらす方の機体(サブ機) [#sc9df09f]
***全体図 [#b61bca3f]
&ref(2014a/Member/gamigami/Mission2/sub1.jpg,25%,機体の写...
&ref(2014a/Member/gamigami/Mission2/sub2.jpg,50%,機体の写...
・時間がなかったことと、複雑な動作が必要ないと思われたの...
・なるべく小さめのを作ろうと頑張った
***アームの部分 [#b0a5e372]
#ref(2014a/Member/gamigami/Mission2/sub3.jpg,25%,機体の写...
・一回転しても紙コップがアームから出ないようにするため少...
*課題 [#i4657ad2]
詳しくは[[2014a/Mission2]]をご覧ください
*プログラムの内容 [#wa53d5e1]
#ref(2014a/Member/gamigami/Mission2/plan.png,70%,行動の図)
**本体の機体の動き [#pa7dd000]
・赤の線の通りに動き、Aの位置の紙コップを掴む
・対応する紙コップに重ねる
・その後緑の動きを行う
緑の線での動きは掴んだ色次第で動作を変える
**サブ機の動き [#c042ef1d]
・青い線のように動き、紙コップを中央のラインに集める
青い点のところに紙コップ移動させる
*プログラム [#f0357afe]
**基本動作の定義付け [#s2d15de5]
#define set_power_L SetPower(OUT_A,1);SetPower(OU...
#define THRESHOLD 45 ...
#define go_forward OnFwd(OUT_AC); ...
#define turn_right0 OnFwd(OUT_A);OnRev(OUT_C); ...
#define turn_right1 OnFwd(OUT_A);Off(OUT_C); ...
#define turn_left1 Off(OUT_A);OnFwd(OUT_C); ...
#define turn_left0 OnRev(OUT_A);OnFwd(OUT_C); ...
#define STEP 1 ...
#define U_turn OnFwd(OUT_A);OnRev(OUT_C);Wait(180);Of...
**コップを持ち上げるプログラムの定義付け [#m35472aa]
#define cup_up OnFwd(OUT_B);Wait(130);Off(OUT_B); ...
#define cup_down OnRev(OUT_B);Wait(130);Off(OUT_B); ...
**変数 [#j93408b5]
int number=0; // グローバル変...
**サブルーチン [#d9539c94]
***ライントレース [#nf4e7543]
/*論理積を使ったライントレースのサブルーチン*/
sub line(){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); /...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); /...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); /...
}else{go_forward;
Wait(STEP); /...
}
}
***紙コップを掴んだ後の動作 [#o7288d92]
/*紙コップを掴んだ後に「点A」に辿り着いてから行う操作の...
sub carry_cup(){
if(number==1){
while((SENSOR_2<47)&&(SENSOR_2>35)){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THR...
go_forward;
Wait(STEP); ...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRE...
turn_right1;
Wait(STEP); ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRE...
turn_left1;
Wait(STEP); ...
}else{
go_forward;
Wait(STEP); ...
}
}
go_forward;
Wait(10); ...
Off(OUT_AC);
cup_down;
U_turn;
while((SENSOR_2<47)&&(SENSOR_2>35)){ ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // ...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // ...
}else{
go_forward;
Wait(STEP); // ...
}
}
}else if(number==2){
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){ ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // ...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // ...
}else{
go_forward;
Wait(STEP); // ...
}
}
turn_right0;
Wait(75); // コップ2...
go_forward;
Wait(10);
U_turn; // 交差点で...
while((SENSOR_2<47)&&(SENSOR_2>35)){ // 紙コップ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしき...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よ...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満...
}
}
go_forward;
Wait(20); // 紙コップに完全に接触するま...
Off(OUT_AC);
cup_down;
OnRev(OUT_AC);
Wait(130);
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){ ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // セ...
}
}
turn_left0;
Wait(75); // 軸にそって紙コップ...
while((SENSOR_2>35)&&(SENSOR_2<47)){ // 紙コ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
}else{
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){ /...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
go_forward;
Wait(10);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){ ...
go_forward;
}
turn_right0;
Wait(75);
while((SENSOR_2>35)&&(SENSOR_2<47)){ // 紙コップ...
go_forward;
}
go_forward;
Wait(25);
Off(OUT_AC);
cup_down;
OnRev(OUT_AC);
Wait(110);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){ ...
OnRev(OUT_AC);
}
turn_right0;
Wait(75);
}
while((SENSOR_2<47)&&(SENSOR_2>35)){ /...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしき...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を...
}
}
}
**開始直後の紙コップAを掴み振り向くまでの動き [#l38033cd]
void start_dash(){
go_forward;
Wait(120); // スタート地点から出る為の動き
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){
go_forward; // 交差点を認識するまで前進
}
turn_right0;
Wait(75);
while((SENSOR_2<47)&&(SENSOR_2>35)){ // 紙コ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つとも...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい...
}else{
go_forward;
Wait(STEP); // センサーの値が条件...
}
}
go_forward;
Wait(100); // コップに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2<47)&&(SENSOR_2>37)){
number=2;
}else{
number=3;
} // 紙コップの色を感知したセ...
cup_up;
U_turn;
}
**全体としてのプログラム [#vbcd7354]
task main(){
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
set_power_L;
int cross=0; // 交差点通過回数のカウンタ
start_dash(); // コップAを掴む
carry_cup();
go_forward;
Wait(50); // コップBに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
} // センサーの値に応じてnumberに値を...
cup_up;
U_turn;
ClearTimer(0); // タイマー設置
while(Timer(0)<40){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
carry_cup();
go_forward;
Wait(50); // コップCに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
} // センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
ClearTimer(0);
while(Timer(0)<20){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
carry_cup();
Off(OUT_AC);
}
*サブ機のプログラム [#o70cafd7]
task main()
{
OnFwd(OUT_AC);
Wait(540);
OnFwd(OUT_C); OnRev(OUT_A); Wait(1...
OnFwd(OUT_AC);
Wait(150); ...
OnRev(OUT_AC);
Wait(100); ...
OnFwd(OUT_C); OnRev(OUT_A); Wait(1...
OnFwd(OUT_AC);
Wait(155);
OnFwd(OUT_A); OnRev(OUT_C); Wait(1...
OnFwd(OUT_AC);
Wait(350);
OnFwd(OUT_A); OnRev(OUT_C); Wait(2...
OnFwd(OUT_AC); ...
Wait(90);
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC); ...
}
*反省・感想 [#z2b04749]
・今回はプログラムを仲間に任せてしまったため、その負担を...
・機構の完成までに時間をかけすぎてしまい、プログラムにか...
・サブ機に付けた回転センサーが意味のないものになってしま...
・サブ機の調整がすべて位置で調整しなければならないプログ...
今回の失敗は実際に試してみるということがなかなかできなか...
今回はプログラム関わることが少なかったのでどのようなプロ...
終了行:
目次
#contents
*メンバー [#xd718c18]
an
gomibakudan
nozomigo
gamigami
*機構 [#b134b320]
**本体の写真 [#oad05d8b]
***コップを重ねる方の機体(本体) [#ua2b1745]
#ref(2014a/Member/gamigami/Mission2/main1.jpg,25%,機体の...
・ギアを回してアームを閉じる
・コップを掴むとアーム部分が上がり,紙コップを持ち上げる...
※この後にアームの改良を加えたので多少アームの形は変わる
アームの黒いパーツを上に付け、アーム部分のタイヤそれぞれ...
***ライントレースに使う光センサー [#u0045b7e]
#ref(2014a/Member/gamigami/Mission2/main2.jpg,25%,機体の...
・両サイドに光センサーを付けることで二か所で判別できるよ...
・その後のかいりょうで光センサーを多少ずらして付け、判別...
***紙コップの判別に使う光センサー [#ida116ff]
#ref(2014a/Member/gamigami/Mission2/main3.jpg,25%,機体の...
・アームを開いている時、紙コップを持ち上げた時、紙コップ...
・アームが下りている時も光センサーが邪魔にならないように...
**コップをずらす方の機体(サブ機) [#sc9df09f]
***全体図 [#b61bca3f]
&ref(2014a/Member/gamigami/Mission2/sub1.jpg,25%,機体の写...
&ref(2014a/Member/gamigami/Mission2/sub2.jpg,50%,機体の写...
・時間がなかったことと、複雑な動作が必要ないと思われたの...
・なるべく小さめのを作ろうと頑張った
***アームの部分 [#b0a5e372]
#ref(2014a/Member/gamigami/Mission2/sub3.jpg,25%,機体の写...
・一回転しても紙コップがアームから出ないようにするため少...
*課題 [#i4657ad2]
詳しくは[[2014a/Mission2]]をご覧ください
*プログラムの内容 [#wa53d5e1]
#ref(2014a/Member/gamigami/Mission2/plan.png,70%,行動の図)
**本体の機体の動き [#pa7dd000]
・赤の線の通りに動き、Aの位置の紙コップを掴む
・対応する紙コップに重ねる
・その後緑の動きを行う
緑の線での動きは掴んだ色次第で動作を変える
**サブ機の動き [#c042ef1d]
・青い線のように動き、紙コップを中央のラインに集める
青い点のところに紙コップ移動させる
*プログラム [#f0357afe]
**基本動作の定義付け [#s2d15de5]
#define set_power_L SetPower(OUT_A,1);SetPower(OU...
#define THRESHOLD 45 ...
#define go_forward OnFwd(OUT_AC); ...
#define turn_right0 OnFwd(OUT_A);OnRev(OUT_C); ...
#define turn_right1 OnFwd(OUT_A);Off(OUT_C); ...
#define turn_left1 Off(OUT_A);OnFwd(OUT_C); ...
#define turn_left0 OnRev(OUT_A);OnFwd(OUT_C); ...
#define STEP 1 ...
#define U_turn OnFwd(OUT_A);OnRev(OUT_C);Wait(180);Of...
**コップを持ち上げるプログラムの定義付け [#m35472aa]
#define cup_up OnFwd(OUT_B);Wait(130);Off(OUT_B); ...
#define cup_down OnRev(OUT_B);Wait(130);Off(OUT_B); ...
**変数 [#j93408b5]
int number=0; // グローバル変...
**サブルーチン [#d9539c94]
***ライントレース [#nf4e7543]
/*論理積を使ったライントレースのサブルーチン*/
sub line(){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); /...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); /...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); /...
}else{go_forward;
Wait(STEP); /...
}
}
***紙コップを掴んだ後の動作 [#o7288d92]
/*紙コップを掴んだ後に「点A」に辿り着いてから行う操作の...
sub carry_cup(){
if(number==1){
while((SENSOR_2<47)&&(SENSOR_2>35)){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THR...
go_forward;
Wait(STEP); ...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRE...
turn_right1;
Wait(STEP); ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRE...
turn_left1;
Wait(STEP); ...
}else{
go_forward;
Wait(STEP); ...
}
}
go_forward;
Wait(10); ...
Off(OUT_AC);
cup_down;
U_turn;
while((SENSOR_2<47)&&(SENSOR_2>35)){ ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // ...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // ...
}else{
go_forward;
Wait(STEP); // ...
}
}
}else if(number==2){
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){ ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // ...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // ...
}else{
go_forward;
Wait(STEP); // ...
}
}
turn_right0;
Wait(75); // コップ2...
go_forward;
Wait(10);
U_turn; // 交差点で...
while((SENSOR_2<47)&&(SENSOR_2>35)){ // 紙コップ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしき...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よ...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よ...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満...
}
}
go_forward;
Wait(20); // 紙コップに完全に接触するま...
Off(OUT_AC);
cup_down;
OnRev(OUT_AC);
Wait(130);
while((SENSOR_1>THRESHOLD)||(SENSOR_3>THRESHOLD)){ ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // セ...
}
}
turn_left0;
Wait(75); // 軸にそって紙コップ...
while((SENSOR_2>35)&&(SENSOR_2<47)){ // 紙コ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
}else{
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){ /...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
go_forward;
Wait(10);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){ ...
go_forward;
}
turn_right0;
Wait(75);
while((SENSOR_2>35)&&(SENSOR_2<47)){ // 紙コップ...
go_forward;
}
go_forward;
Wait(25);
Off(OUT_AC);
cup_down;
OnRev(OUT_AC);
Wait(110);
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){ ...
OnRev(OUT_AC);
}
turn_right0;
Wait(75);
}
while((SENSOR_2<47)&&(SENSOR_2>35)){ /...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしき...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を...
}
}
}
**開始直後の紙コップAを掴み振り向くまでの動き [#l38033cd]
void start_dash(){
go_forward;
Wait(120); // スタート地点から出る為の動き
while((SENSOR_1>THRESHOLD)||(SENSOR_3)>THRESHOLD){
go_forward; // 交差点を認識するまで前進
}
turn_right0;
Wait(75);
while((SENSOR_2<47)&&(SENSOR_2>35)){ // 紙コ...
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つとも...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい...
}else{
go_forward;
Wait(STEP); // センサーの値が条件...
}
}
go_forward;
Wait(100); // コップに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2<47)&&(SENSOR_2>37)){
number=2;
}else{
number=3;
} // 紙コップの色を感知したセ...
cup_up;
U_turn;
}
**全体としてのプログラム [#vbcd7354]
task main(){
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
set_power_L;
int cross=0; // 交差点通過回数のカウンタ
start_dash(); // コップAを掴む
carry_cup();
go_forward;
Wait(50); // コップBに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
} // センサーの値に応じてnumberに値を...
cup_up;
U_turn;
ClearTimer(0); // タイマー設置
while(Timer(0)<40){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
carry_cup();
go_forward;
Wait(50); // コップCに接触するまで
Off(OUT_AC);
if(SENSOR_2>47){
number=1;
}else if((SENSOR_2>35)&&(SENSOR_2<47)){
number=2;
}else{
number=3;
} // センサーの値に応じてnumberに値を入れる
cup_up;
U_turn;
ClearTimer(0);
while(Timer(0)<20){
if((SENSOR_1>THRESHOLD)&&(SENSOR_3>THRESHOLD)){
go_forward;
Wait(STEP); // センサーが2つともしきい値...
}else if((SENSOR_1>THRESHOLD)&&(SENSOR_3<THRESHOLD)){
turn_right1;
Wait(STEP); // センサー1がしきい値よりも...
}else if((SENSOR_1<THRESHOLD)&&(SENSOR_3>THRESHOLD)){
turn_left1;
Wait(STEP); // センサー1がしきい値よりも...
}else{
go_forward;
Wait(STEP); // センサーの値が条件を満たさ...
}
}
carry_cup();
Off(OUT_AC);
}
*サブ機のプログラム [#o70cafd7]
task main()
{
OnFwd(OUT_AC);
Wait(540);
OnFwd(OUT_C); OnRev(OUT_A); Wait(1...
OnFwd(OUT_AC);
Wait(150); ...
OnRev(OUT_AC);
Wait(100); ...
OnFwd(OUT_C); OnRev(OUT_A); Wait(1...
OnFwd(OUT_AC);
Wait(155);
OnFwd(OUT_A); OnRev(OUT_C); Wait(1...
OnFwd(OUT_AC);
Wait(350);
OnFwd(OUT_A); OnRev(OUT_C); Wait(2...
OnFwd(OUT_AC); ...
Wait(90);
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC); ...
}
*反省・感想 [#z2b04749]
・今回はプログラムを仲間に任せてしまったため、その負担を...
・機構の完成までに時間をかけすぎてしまい、プログラムにか...
・サブ機に付けた回転センサーが意味のないものになってしま...
・サブ機の調整がすべて位置で調整しなければならないプログ...
今回の失敗は実際に試してみるということがなかなかできなか...
今回はプログラム関わることが少なかったのでどのようなプロ...
ページ名: