- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*課題の内容 [#id2761c6]
相手のロボットに向かってブロックを投げるロボットを製作せよ。
**ルール [#g2606a81]
・一つのロボットで、ライントレースをする、ライントレースをするロボットにブロックを投げる、ライントレースをするロボットを追尾した後ブロックを投げる、以上の3種類のプログラムを作る。
~ ・タイヤを動かすためのモーターは一つのみ。
*メンバー [#fcadf1f1]
・ヒカル
・竹園
*ロボットについて [#id2145ce]
**本体 [#o15b0364]
**工夫点・苦労した点[#l981f87f]
*コースの紹介 [#wead8338]
~・課題2で使用したものと同じです。
#ref(20110108133531.jpg)
*プログラム [#md91cc51]
**ヒカル(追尾なし) [#l02ae0d1]
int light_max;
int t_max;
int x;
#define TURN_TIME 50 // トレースする時間(単位 1/10 秒)
#define SHOT OnFwd(OUT_C);Wait(30);Off(OUT_C);OnRev(OUT_C);Wait(30);Off(OUT_C);
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
ClearTimer(0); // Timer(0) をリセット
light_max = 0; // light_max初期化
x = 4;
while(x >= 1){
while ( Timer(0) <= TURN_TIME ) { // タイマー0がTURN_TIME以下の時に繰り返す
OnFwd(OUT_A);
if (SENSOR_1 < light_max) {
light_max = SENSOR_1;
t_max = Timer(0);
}
}
ClearTimer(0);
while ( Timer(0) <= t_max) {
OnFwd(OUT_A);
}
Wait(30);
SHOT; //弾を発射する
x--; //残りの弾数に合わせる
}
}
**竹園(追尾あり) [#k3c54d6a]
~
#define TURN_TIME 200 //一周する時間
sub go_straight() //前進する
{
OnFwd(OUT_A);
Wait(030);
OnRev(OUT_A);
Wait(030);
}
sub fire() //弾発射
{
OnFwd(OUT_C);
Wait(020);
OnRev(OUT_C);
Wait(020);
Float(OUT_C);
Wait(060);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1は光センサ
int light_max = 0; //光の最大値を記録する変数
ClearTimer(0); //タイマー(0)をリセット
while(Timer(0)<=TURN_TIME) //一周するまで
{
OnFwd(OUT_A); //右に回る
if(SENSOR_1>light_max) //センサ1の値が光の最大値より明るいとき
{
light_max = SENSOR_1; //センサ1の値を光の最大値に更新する
}
}
OnFwd(OUT_A); //右に回る
until(SENSOR_1 == light_max); //センサ1の値が光の最大値になるまで
repeat(9)
{
go_straight(); //前進する
}
Float(OUT_A); //止まる
repeat(2)
{
fire(); //弾発射
}
}
*感想 [#h3157b89]
**ヒカル [#x0ef6e56]
**竹園 [#c4f5d4fc]
今回のプログラミングはわりと簡潔にまとまっていてよかったです。ただロボットの製作はディファレンシャルギアを作っただけでした。このあとはロボコンで終わりなので、授業で得た知識・技術の集大成にできるように頑張ろうと思います。
*コメント [#c39788d3]
ご自由にお書きください
#comment