[[2015a/Member]]

*目標 [#v95bff27]
今回の目標は&size(30){「確実に空き缶を見つけてボールを当てる。」};これを目標として製作してきました。実現するにあたって機体自体のモチーフとしたのがカタパルトです。

&ref(./lgi01a201402210300.jpg,40%);
&ref(./th3MHHYTJ0.jpg,15%);
&ref(./16790.jpg,40%);
**ボールの射出 [#c3d2fffb]
今回はモーターCをボ−ルを投げるのに使いました。ボールが横から出ないようにギアを横に着けサポートしまっすぐ飛ぶように真ん中にボールが収まる幅を持たました。

&ref(./16787.jpg,30%);
&ref(./16779.jpg,30%);

編集のプログラミングは下記の通りです。勢いをつけるために75%の出力で強めにボールを投げ出すようにしました。
 RotateMotor(OUT_C,75,45);
**空き缶の検知 [#ddbe985a]
10°ずつ旋回させていき空き缶を感知させました。ポイントは旋回させたことで、旋回させたことでその場所から動かないでいることでほぼほぼ正確な場所に戻ってくることができました。
 int scan_angle(int a){ //0<=a<=36で指定 a*10°の範囲をスキャンする
	PlaySound(SOUND_CLICK);
	Wait(500);
	int min_temp=0; //仮の最小値
	int min=100; //最小値
	int angle=0; //最小値を記録した角度[°]
	int i=0; //i*10[°]ごと記録する
	int turn_time=TURN_TIME_10;
	repeat(a){
		min_temp=SensorUS(S4);
		if(min>=min_temp){ //最小値比較
			min=min_temp; //最小値更新
			angle=i*10; //最小値
			PlaySound(SOUND_LOW_BEEP);
			Wait(500);
		}
		turn_right;
		Wait(turn_time);
		i++;
	}
	return angle;
 }
 
**空き缶のほうを向きボールをシュ−−ト!![#o76c1d34]
#ref(./16878.jpg,30%);
先ほど検知したので写真のように半分は左に旋回、右に旋回するようにしました。そしてそのまま15僂里箸海蹐泙廼瓩鼎い謄棔璽襪鯣射して終了です。

 task main(){
	int machine_turn_time=0; //ロボットの回転時間
	SetSensorLowspeed(S4);
	int angle=scan_angle(36); //360°スキャン
	if(angle<=180){
		machine_turn_time=TURN_TIME_10*angle;
		go_forward;
		Wait(machine_turn_time);
		Off(OUT_AB);
	}else{
		machine_turn_time=TURN_TIME_10*angle;
		go_forward;
		Wait(machine_turn_time);
		Off(OUT_AB);
	}
  int flg=0;
	while(flg==0){
		go_forward;
		if(SensorUS(S4)<=15){
			flg=1;
		}
	}
   Off(OUT_AB);
  RotateMotor(OUT_C,75,45);
 }
*感想 [#yd0c59f1]
今回は限られた時間の中でかなり良いものがつくれてっよかったです。実際の社会に出た時でも短い期間で新しいものを作っていかなければならない場面が多々あるので今後の将来のためにも良い課題になりました。ロボット自体では新しいオリジナルに近いものではないのですが昔の知恵をうまいこと使い土台も安定してコンパクトに収まった良いものができました。改善点はコードを通す場所を考えずに作ったのでコードがぐしゃぐしゃで見栄えの悪いものになってしまいました。しっかりとコードの道筋も考えてスマートなロボットを作りたいという気持ちがわき今後にもつながる良い改善点でした。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS