- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006b/MemberOnly/進行状況A]]
*課題 光を追いかけるロボット [#p2854809]
**プログラム1(失敗) [#q850c631]
task main()
#define T_Time 450
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int light=0;
int time;
ClearTimer(0);
while(FastTimer(0)<T_Time)
{
OnFwd(OUT_C);OnRev(OUT_A);
if(light<SENSOR_1)
{
light=SENSOR_1;
ClearTimer(1); }}
time=FastTimer(1);
OnFwd(OUT_A);OnRev(OUT_C);
Wait(time);Off(OUT_A+OUT_C);Wait(100);
while(true)
{OnFwd(OUT_A+OUT_C);
if(SENSOR_3<SENSOR_1){OnRev(OUT_A);OnFwd(OUT_C);}
if(SENSOR_1<SENSOR_3){OnRev(OUT_C);OnFwd(OUT_A);}}}
最も明るいところを見つけるプログラムを組むのは、意外と簡単にできました。しかしその後、光に向かっていくプログラムを組むのに苦戦しました。プログラム1は、一応光りに向かっていくのですが、ものすごく小刻みに(左右に)動きながら近ずくので、遅いうえに五月蝿いというデメリットばかりのプログラムになりました。
**プログラム2(成功) [#ief5d3a4]
task main()
#define T_Time 450
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int light=0;
int time;
ClearTimer(0);
while(FastTimer(0)<T_Time)
{
OnFwd(OUT_C);OnRev(OUT_A);
if(light<SENSOR_1)
{
light=SENSOR_1;
ClearTimer(1); }}
time=FastTimer(1);
OnFwd(OUT_A);OnRev(OUT_C);
Wait(time);Off(OUT_A+OUT_C);Wait(100);OnFwd(OUT_A+OUT_C);Wait(100);
light=0;
ClearTimer(1);
ClearTimer(0); }
見てわかる通りプログラム2は、プログラム1を少しいじくっただけです。このプログラムは、最も明るい方位を見つけたら、その方位へ少し進みその後、また最も明るい方位を見つけて進むを繰り返すプログラムです。デメリットは、少し時間がかかることですが、ライトの位置を変えても向かっていくことができるというメリットがあります(まさしく急がば回れ)。
**苦労した点 [#q1ef6a3a]
最も明るい方位を見つけるプログラムはかなり早い段階でできましたが、光に向かっていくプログラムを組むのに苦戦しました。何度か試行錯誤を繰り返しましたが、結局センサーを2つ使うのを断念しました。センサーを1つにしてからは、割と早く完成しました。
**工夫した点 [#d7994098]
プログラム1ではセンサーを2つ、プログラム2では1つ使っています。プログラム次第で、センサーが1つでも十分な結果が出せた。むしろセンサーが1つの方が、プログラムを組むのが簡単だった。
**コメントをどうぞ! [#jd996a43]
-プログラム内にコメント文を書いたり別途プログラムの説明を加えるなど、どの箇所でどのようなことを実行しているのか、レポートとして分かりやすくする工夫をしてみてください。 -- [[松本(教員)]] &new{2007-01-29 (月) 11:52:10};
#comment