目次
#contents

*課題 [#he699fa0]
**ロボコン [#p91ba67a]
[[詳細はこちら>2010a/ロボコン]]

**メンバー [#ud8a88ce]
田島・新谷・みさいづ・みのう

*ロボットの製作(橋の役目をする側) [#xbfe1ccc]
**製作したロボット [#h992e180]
*ロボットの製作 [#j55e780b]
**製作したロボット(橋の役目をする側) [#i746af83]
#ref(./100806robo01.jpg,around,80%,ロボット(橋側:展開))
#ref(./100806robo02.jpg,around,80%,ロボット(橋側:収納))
#clear

**製作したロボット(玉を回収する側) [#t0ba302e]
#ref(./100806robo03.jpg,80%,ロボット(玉回収側))

**ロボット合体 [#j189426d]
#ref(./100806robo_c.jpg,80%,ロボット合体)

**工夫した点 [#mea520b7]

**今後改善すべき点 [#kc9649f1]

*ロボットの製作(玉を回収する側) [#r61563ee]
**製作したロボット [#pded5d9d]

**工夫した点 [#i6f48fc5]
*プログラムの作成 [#h067f65d]
**作成したプログラム(橋の役目をする側) [#k1b4435d]

**今後改善すべき点 [#p1f1d704]
**作成したプログラム(玉を回収する側) [#c2cf51d6]
 #define go_straight() OnRev(OUT_A);OnFwd(OUT_C); // 前進
 #define go_back() OnFwd(OUT_A);OnRev(OUT_C); // 後退
 #define go_stop() Off(OUT_A+OUT_C); // 停止
 #define arm_up() OnRev(OUT_B); // アーム上昇
 #define arm_down() OnFwd(OUT_B); // アーム降下
 #define arm_stop() Off(OUT_B); // アーム停止
 
 #define CHILD_MOVE_BEGIN 1 // 玉回収開始信号
 #define CHILD_MOVE_END 2 // 玉回収終了信号
 #define CHILD_MOVE_STOPCHECK 3  // 玉回収終了信号受信確認信号
 
 #define armlength 140 // 玉回収時前後移動量
 #define armuptime 90 // アーム上昇量
 #define armdntime 75 // アーム降下量
 #define bgmaxcount 6 // 玉回収最大試行回数
 
 int prework = 1; // 玉回収開始信号待ちフラグ
 int dowork = 0; // 玉回収中フラグ
 int lastwork = 0; // 玉回収終了信号送信、玉回収終了信号受信確認信号待ちフラグ
 int revbool = 0; // 玉回収(後退)中フラグ
 int bg1bool = 0; // 玉回収(アーム降下)中フラグ
 int bg2bool = 0; // 玉回収(前進)中フラグ
 int bg3bool = 0; // 玉回収(アーム上昇)中フラグ
 int bgcount = 0; // 玉回収試行回数
 
 task main() {
 	SetSensor(SENSOR_2, SENSOR_TOUCH);
 
 	ClearMessage();
 	while(prework) { // 玉回収信号待ち
 		Off(OUT_A+OUT_B+OUT_C);
 		if(Message() == CHILD_MOVE_BEGIN) { // 玉回収信号受信
 			ClearMessage();
 			prework = 0; // フラグを切り替え玉回収へ移行
 			dowork = 1;
 			ClearTimer(1);
 		}
 	}
 
 	while(dowork) { // 玉回収
 		if(bg1bool) { // 玉回収(アーム降下)
 			go_stop();
 			arm_down();
 			if(FastTimer(0)>armdntime) { // アーム下げたらフラグ切り替え
 				arm_stop();
 				bg1bool = 0;
 				bg2bool = 1;
 				ClearTimer(0);
 			}	
 		} else if(bg2bool) { // 玉回収(前進)
 			go_straight();
 			if(FastTimer(0)>armlength) { // 玉回収時前後移動量進んだらフラグ切り替え
 				go_stop();
 				bg2bool = 0;
 				bg3bool = 1;
 				ClearTimer(0);
 			}	
 		} else if(bg3bool) { // 玉回収(アーム上昇)
 			arm_up();
 			if(FastTimer(0)>armuptime) { // アーム上げたらフラグ切り替え
 				arm_stop();
 				bgcount++;
 				bg3bool = 0;
 				if(bgcount >= bgmaxcount) { // 玉回収最大試行回数試行したら回収終了
 					bg3bool = 0; // フラグ切り替えて玉回収終了信号送信開始、玉回収終了信号受信確認信号待ち
 					dowork = 0;
 					lastwork = 1;
 					ClearMessage();
 				}
 				ClearTimer(0);
 			}
 		} else if((SENSOR_2 || revbool) && !(bg1bool || bg2bool || bg3bool) && FastTimer(1)>450) { // 玉回収(後退)、橋から降りている間(動作開始後4.5秒間)は反応しない
 			go_back();
 			if(!revbool) { // タッチセンサが離れても後退を継続するためのフラグを立てる
 				revbool = 1;
 				ClearTimer(0);
 			}
 			if(FastTimer(0)>armlength) { // 玉回収時前後移動量下がったらフラグ切り替え
 				revbool = 0;
 				bg1bool = 1;
 				ClearTimer(0);
 			}
 		} else { // 通常
 			go_straight(); // 前進
 		}
 	}
 
 	while(lastwork) { // 玉回収終了信号送信、玉回収終了信号受信確認信号待ち
 		go_back(); // 後退
 		if(FastTimer(0) >= 100) { // 1秒ごとに玉回収終了信号送信
 			PlaySound(SOUND_CLICK);
 			SendMessage(CHILD_MOVE_END);
 			ClearTimer(0);
 		}
 		if(Message() == CHILD_MOVE_STOPCHECK) { // 玉回収終了信号受信
 			go_stop(); // 停止
			lastwork = 0; // フラグ下げて動作停止
 		}
 	}
 }

*プログラムの作成(橋の役目をする側) [#bda43bde]
**作成したプログラム [#x2f80c38]

**工夫した点 [#q1db4e68]

**今後改善すべき点 [#oa6648ea]

*プログラムの作成(玉を回収する側) [#yfc63e77]
**作成したプログラム [#l31b74c6]

**工夫した点 [#z8068776]

**今後改善すべき点 [#ucc19c2b]

*反省・感想 [#m0f5f047]
-(田島)
-(新谷)
-(みさいづ)
-(みのう)

*コメントをどうぞ [#dc28d5e7]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS