2015a/Member/sa-tan/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
#contents
*ボールを転がして空き缶に当てるロボット [#w8bdd8ff]
**はじめに [#i3d85ab2]
今回は半径1m以内にある空き缶を探して、25cmの距離からボー...
**ロボット本体構造 [#n052a679]
モーターA,Bに左右のタイヤをつけ、モーターCにアームを取り...
***機体の外観 [#if2cdaf5]
カタパルトがついている
&ref(./IMG_2417.JPG,30%);
***ボールを投げる構造(カタパルト) [#y537e8d5]
投石器の様にアームを使って投げることが出来る様になってい...
&ref(./IMG_2413.JPG,30%);
&ref(./IMG_2415.JPG,30%);
&ref(./IMG_2416.JPG,30%);
&ref(./IMG_2420.JPG,30%);
&ref(./IMG_2419.JPG,30%);
***超音波センサー [#n8ac9ef0]
&ref(./IMG_2417.JPG,30%);
***プログラム定義 [#p7a5fe39]
#define turn_left OnFwd(OUT_A,25);OnRev(OUT_B,25);
#define turn_right OnFwd(OUT_B,25);OnRev(OUT_A,25);
#define go_forward OnFwd(OUT_AB,25);
#define TURN_TIME_10=147; //10°回転する時間
***空き缶の位置を超音波センサーで探すプログラム [#b5ac2004]
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;
***空き缶の位置まで回転するプログラム[#xbba25f7]
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);
}
***缶まで前進するプログラム[#pe7be673]
int flg=0;
while(flg==0){
go_forward;
if(SensorUS(S4)<=15){
flg=1;
}
}
Off(OUT_AB);
***ボールを投げるプログラム [#h8782832]
OnFwd(OUT_C,100); //ボール射出
Wait(500);
}
**問題点 [#l566bee9]
電池の消耗で回転に要する時間が変わって正確な角度まで回転...
ボールの射出方式が悪く、ボールを遠くに飛ばせなかった。
**感想 [#ob488019]
超音波センサーが反応して素直に感動した。ボールを缶に当て...
終了行:
[[2015a/Member]]
#contents
*ボールを転がして空き缶に当てるロボット [#w8bdd8ff]
**はじめに [#i3d85ab2]
今回は半径1m以内にある空き缶を探して、25cmの距離からボー...
**ロボット本体構造 [#n052a679]
モーターA,Bに左右のタイヤをつけ、モーターCにアームを取り...
***機体の外観 [#if2cdaf5]
カタパルトがついている
&ref(./IMG_2417.JPG,30%);
***ボールを投げる構造(カタパルト) [#y537e8d5]
投石器の様にアームを使って投げることが出来る様になってい...
&ref(./IMG_2413.JPG,30%);
&ref(./IMG_2415.JPG,30%);
&ref(./IMG_2416.JPG,30%);
&ref(./IMG_2420.JPG,30%);
&ref(./IMG_2419.JPG,30%);
***超音波センサー [#n8ac9ef0]
&ref(./IMG_2417.JPG,30%);
***プログラム定義 [#p7a5fe39]
#define turn_left OnFwd(OUT_A,25);OnRev(OUT_B,25);
#define turn_right OnFwd(OUT_B,25);OnRev(OUT_A,25);
#define go_forward OnFwd(OUT_AB,25);
#define TURN_TIME_10=147; //10°回転する時間
***空き缶の位置を超音波センサーで探すプログラム [#b5ac2004]
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;
***空き缶の位置まで回転するプログラム[#xbba25f7]
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);
}
***缶まで前進するプログラム[#pe7be673]
int flg=0;
while(flg==0){
go_forward;
if(SensorUS(S4)<=15){
flg=1;
}
}
Off(OUT_AB);
***ボールを投げるプログラム [#h8782832]
OnFwd(OUT_C,100); //ボール射出
Wait(500);
}
**問題点 [#l566bee9]
電池の消耗で回転に要する時間が変わって正確な角度まで回転...
ボールの射出方式が悪く、ボールを遠くに飛ばせなかった。
**感想 [#ob488019]
超音波センサーが反応して素直に感動した。ボールを缶に当て...
ページ名: