#contents
*ロボコンの内容とルール [#y102ff4f]

今回はRCXが2個あるので、ピンポン玉を拾うロボットと、上へ運んでかごに入れるロボットの2台を作った。
*拾うロボット [#vc7734b2]
**ロボットの仕組み [#u9d4e979]
**プログラム [#s1abc8c8]
***玉を回収するプログラム1(単独競技用) [#g6bc14a9]

 #define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);Wait(50);	//t秒間前進
 #define turn_left(t) OnRev(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C);Wait(50);	//t秒間左に曲がる
 #define turn_right(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);Wait(50);	//t秒間右に曲がる
 #define back(t)  OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);Wait(50);		//秒間後退
 task main()
 {
	SetSensor(SENSOR_1,SENSOR_TOUCH);	//センサー1をタッチセンサと認識 
	SetSensor(SENSOR_3,SENSOR_TOUCH);	//センサー2をタッチセンサと認識
	OnFwd(OUT_B);		//玉を回収するモーターを始動
	turn_right(54)		//玉がある位置まで移動する
	go_straight(90)
	turn_left(55)
	go_straight(170)
	turn_left(55)
	go_straight(90)		//玉に向かって直進し、回収する
	back(200)
	go_straight(25)			//相方に玉を渡しに戻る
	turn_left(55)
	go_straight(115)
	turn_right(54)
	go_straight(60)		//相方の前にセッティング
	OnRev(OUT_B);		//玉を吐き出す
	Wait(500);
	Off(OUT_B);
	back(60)                //後退
	turn_left(55)           //スタート地点に戻る
	go_straight(75)
	turn_right(54)
	go_straight(130)
	Off(OUT_A+OUT_C+OUT_B);  //終わり
 }

***玉を回収するプログラム2(リーグ戦用) [#c0935070]

 #define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);Wait(50);	//t秒間前進
 #define turn_left(t) OnRev(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C);Wait(50);	//t秒間左に曲がる
 #define turn_right(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);Wait(50);	//t秒間右に曲がる
 #define back(t)  OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);Wait(50);		//秒間後退
 task main()
 {
	SetSensor(SENSOR_1,SENSOR_TOUCH);	//センサー1をタッチセンサと認識 
	SetSensor(SENSOR_3,SENSOR_TOUCH);	//センサー2をタッチセンサと認識
	OnFwd(OUT_B);		//玉を回収するモーターを始動
	turn_right(54)		//玉がある位置まで移動する
	go_straight(90)
	turn_left(55)
	go_straight(170)
	turn_left(55)
	go_straight(90)		//玉に向かって直進し、回収する
	back(200)
	go_straight(25)			//相方に玉を渡しに戻る
	turn_left(55)
	go_straight(115)
	turn_right(54)
	go_straight(60)		//相方の前にセッティング
	OnRev(OUT_B);		//玉を吐き出す
	Wait(500);
	Off(OUT_B);
	OnFwd(OUT_B);
	back(85)		//後ろに下がって相手の陣地行く
	turn_right(62)
	go_straight(200)
	repeat(8){
	ClearTimer(0);		//タイマーをセット
	while(Timer(0) <= 200){		//20秒間whileの中を実行
	if((SENSOR_1 == 0) && (SENSOR_3 == 0)){	//センサが2つとも反応しない場合
	OnFwd(OUT_A+OUT_C);					//前進
	}
	if(SENSOR_1 == 1){					//センサ1だけ反応した場合
	back(30)						//少し後退して右に曲がる
	turn_right(55)
	}
	if(SENSOR_3 == 1){					//センサ3だけ反応した場合
	back(30)						//少し後退して右に曲がる
	turn_left(40)
	}
	if((SENSOR_1 == 1) && (SENSOR_3 == 1)){	//センサが2つ戸も反応した場合
	back(50)
	turn_right(50)					//後退して右に曲がる
	}
 }
 	OnRev(OUT_B);					//玉を吐き出す
 	Wait(300);
	Off(OUT_B);
	Wait(100);
	OnFwd(OUT_B);					//whileの中はここまで
 }
 Off(OUT_A+OUT_C+OUT_B);					//終わり
 }

*上げるロボット [#s3a54112]
**ロボットの仕組み [#ne298fd4]

下の写真ははじめに作った装置です。
#ref(./ピンポン階段装置.gif,100%,)
階段状レールの下からピンポン玉を押し上げて、3段の階段を上がります。


この装置の問題点は上方向への移動距離が短いことです。
そのため、別の装置と組み合わせることにしました。


新しく作ったのが下の写真の装置です。
#ref(,100%,)
ホイールとチューブを組み合わせた先端はピンポン玉がぴったりはまります。
これをギザギザな歯のあるブロックを使って上下に動かします。

#ref(./CA3C0308.JPG,100%,)

**プログラム [#of201d55]

 task main(){
 	SetSensor(SENSOR_1,SENSOR_TOUCH);	//センサー1(タッチセンサー)を定義
 	SetPower(OUT_A,4);		//左のモーターの力を4に定義する
 	SetPower(OUT_C,3);		//右のモーターの力を3に定義する
 
 	OnFwd(OUT_A+OUT_C);	Wait(180);	//手前のカゴの位置に進む
 	OnRev(OUT_A);Wait(350);
 	OnFwd(OUT_A+OUT_C);	Wait(500);
 	Off(OUT_A+OUT_C);
 
 	repeat(5){			//5回繰り返す
 		OnFwd(OUT_B);Wait(60);	//一旦UFOを持ち上げて停止
 		Off(OUT_B);Wait(30);
 		OnRev(OUT_B);Wait(60);	//UFOを下げる
 		while(SENSOR_1 != 1){	//センサーが反応するまで持ち上げる
 			OnFwd(OUT_B);Wait(30);	//UFOを上まで持ち上げてゴールする
 			Off(OUT_B);//Wait(10);
 		}
 		Off(OUT_B);Wait(100);
 		OnRev(OUT_B);Wait(300);	//下までUFOを下げる
 		Off(OUT_B);Wait(50);
 	}
 	OnRev(OUT_C);Wait(350);		//元の位置に戻る
 }

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