- 追加された行はこの色です。
- 削除された行はこの色です。
[[2015a/Member]]
目次(ロボ)
#contents
* 課題 [#bcd2fde6]
半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作すること。 ただし、ピンポン玉を放つ距離は10〜30cmである。 ロボット本体が懐中電灯に接触しない限りどこからピンポン玉を放っても良いこと。
* ロボット本体の説明 [#a6947f86]
** 3つのモーターの用途 [#y196ef65]
-車体の前後方向移動 (モータA,C)
-車体の旋回 (モータA,C)
-アームの開閉 (モータB)
** センサーの用途 [#ocfd73aa]
-光センサー (センサー1)
* プログラムの説明 [#icf16dd0]
** 光量の最大値を求めるプログラムとシュートのプログラム [#p86fab44]
#define TURN_TIME 395//一回転する時間
int light_max; //lightセンサーの値の最大値
int time_max; //lightセンサーの値が最大の時の時間
task main(){
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(1);
if (Timer(1) <=500) {
light_max = 0;
time_max = 0;
OnFwd(OUT_A);
OnRev(OUT_C);
start GetMax;} else { start shoot;}
}
//lightセンサーが最大になる時の値、及び時間決定//
task GetMax(){
ClearTimer(0);//タイマーを初期化
while (FastTimer(0) <= TURN_TIME) {//一回転して一番明るいところを探す
if (SENSOR_2 > light_max){
light_max=SENSOR_2; //SENSOR_2の値が現在のlight_max
time_max=FastTimer(0); //SENSOR_2が最大の時の時間を記録
}
}
//回転して//
if (time_max <= TURN_TIME/2) {//最明点≦180°のとき
Wait(time_max); //360もう一度回る
}
else {//最明点>180°のとき
Toggle(OUT_A);//左に回る
Toggle(OUT_C);
Wait(TURN_TIME-time_max);
}
start Chase;
}
//光を追いかける動作//
task Chase(){
Float(OUT_AC);
while(true){
if (SENSOR_2 >= light_max){
(OUT_A);
Float(OUT_C);
}
else {
Float(OUT_A);
OnFwd(OUT_C);
}
}
}
task shoot ()
{
OnFwd(OUT_B); //hiraku
Wait(10);
OnRev(OUT_AC);Wait(10);
OnFwd(OUT_AC);Wait(25);
}
* 改善した点 [#sa2ab6c6]
-初期のロボットは前部のアームが開閉せず、ピンポン玉の挙動が安定しなかったが、開閉式にすることで安定した仕事ができるようになった
*結果 [#l4980d10]
*反省 [#k5a92a87]