- 追加された行はこの色です。
- 削除された行はこの色です。
[[戻る>2005/A6/課題4左]]
*懐中電灯の光に向かって進むプログラム [#q196ca92]
**untilを使ったプログラム [#w52e603c]
// 12月5日
// コンド
// 機体は課題3のモーターが二つあるタイプの機体をもとに
// 三輪で後ろがキャスターになっている(プログラム:パート1)
int light = 0;
int turn_time = 30;
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT); // 真ん中のライトセンサー
ClearTimer(0); // タイマー0をリセットする
while(Timer(0) <= turn_time) // 4秒以内の動き
{
if(SENSOR_2 > light) // センサー2が『light』の光量より多いとき
{
light = SENSOR_2; // 『light』をセンサー2で示した値に置き換える
}
OnFwd(OUT_A); // 左タイヤが正転
OnRev(OUT_A); // 右タイヤが後転
}
OnFwd(OUT_A); // 左タイヤが正転
OnRev(OUT_A); // 右タイヤが後転
until(SENSOR_2 >= light); // センサー2の値以上になるまで
while(true)
{
if(SENSOR_2 < light) // センサーが懐中電灯の光から外れたとき
{
OnFwd(OUT_A); // 左タイヤが正転
OnRev(OUT_C); // 右タイヤが後転
until(SENSOR_2 >= light); // センサーが懐中電灯の光を見るまで
}
else // センサーが懐中電灯の光を見たとき
{
OnFwd(OUT_A + OUT_C); // 前進する
until(SENSOR_2 < light); // センサーが懐中電灯から外れるまで
}
}
}
**反省 [#re91764d]
・懐中電灯の光を探してくるくる回る。
・初めてタイマーを使ってみて、とりあえずうまくいった。
#comment
**repeatを使ったプログラム [#z6637344]
// 12月9日
// コンド
// プログラム:パート2
int light = 0;
int i = 0;
int i_max = 0;
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT); // 真ん中のライトセンサー
OnFwd(OUT_A); // 左タイヤが正転
OnRev(OUT_C); // 右タイヤが後転
repeat(60) // 一回転するまで繰り返す
{
if(SENSOR_2 > light) // センサー2が『light』の光量より多いとき
{
light = SENSOR_2; // 『light』をセンサー2で示した値に置き換える
i_max = i; // i_maxをiに置き換える
}
PlayTone(light*10,5); // 光量に合わせた音を出す
Wait(5); // 0.05秒待つ
i++; // iを一つ増やす
}
OnFwd(OUT_C); // 左タイヤが正転
OnRev(OUT_A); // 右タイヤが後転
Wait(i_max); // 懐中電灯のある方向まで回る
OnFwd(OUT_A + OUT_C); // 懐中電灯に向かって進む
while(true)
{
if(SENSOR_2 < light) // センサーが懐中電灯の光から外れたとき
{
PlayTone(light*10,100); // 音を出す
OnFwd(OUT_A); // 左タイヤが正転
OnRev(OUT_C); // 右タイヤが後転
until(SENSOR_2 >= light); // センサーが懐中電灯の光を見るまで
}
else // センサーが懐中電灯の光を見たとき
{
PlayTone(light*5,100); // 音を出す
OnFwd(OUT_A + OUT_C); // 前進する
until(SENSOR_2 < light); // センサーが懐中電灯から外れるまで
}
}
}
**反省 [#u026a584]
・センサーがひとつだけなのでその分精度が低いのが欠点。
・一つ目と似ているので音を付け足してみました。
#comment