- 履歴一覧
- ソース を表示
- 2005/A5/学習ノート Marbled Rockfish/ラインをトレースするプログラム『鬼ごっこ』 は削除されています。
- 追加された行はこの色です。
- 削除された行はこの色です。
*&color(red){現在製作中!!}; [#gbd128a3]
***[[学習ノート Marbled Rockfish>2005/A5/学習ノート Marbled Rockfish]] [#p6425e03]
***課題3:ラインをトレースするロボット[[課題3右>2005/A5/課題3右]] [#s9f82292]
*ラインをトレースするプログラム『鬼ごっこ』 [#ua688a78]
作成者:Marbled Rockfish
**ラインをトレースしながら前進し(追いかけ)、前後のタッチセンサーにぶつかったら(捕まえたら)反転し、またトレースしながら前進するプログラムです。 [#he7f897c]
#define go_straight OnFwd(OUT_A+OUT_C);
#define turn_right SetPower(OUT_C,1);OnFwd(OUT_A);OnRev(OUT_C);
#define turn_left SetPower(OUT_A,1);OnFwd(OUT_C);OnRev(OUT_A);
#define go_straight OnFwd(OUT_A+OUT_C); /前進
#define turn_right SetPower(OUT_C,6);OnFwd(OUT_A);OnRev(OUT_C); /モーターパワーC=6,右旋回
#define turn_left SetPower(OUT_A,6);OnFwd(OUT_C);OnRev(OUT_A); /モーターパワーA=6,左旋回
task main ()
{
SetPower(OUT_A,0);
SetPower(OUT_C,0);
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_1, SENSOR_LIGHT); /センサー1:光センサー
SetSensor(SENSOR_2, SENSOR_TOUCH); /センサー2:タッチセンサー
SetSensor(SENSOR_3, SENSOR_LIGHT); /センサー3:光センサー
while (true)
{
if (SENSOR_2>=1)
{
Off(OUT_A+OUT_C);Wait(100);
turn_right;Wait(130);
{ /センサー2がONなら
Off(OUT_A+OUT_C);Wait(100); /1秒停止
turn_right;Wait(65); /180°右旋回
}
if (SENSOR_1<40)
{turn_left;}
{turn_left;} /センサー1が黒なら左旋回
if (SENSOR_3<40)
{turn_right;}
{turn_right;} /センサー3が黒なら右旋回
if ((SENSOR_1>40)&&(SENSOR_3>40))
{go_straight;}
{go_straight;} /センサー1,3が白なら前進
if ((SENSOR_1<40)&&(SENSOR_3<40))
{
Off(OUT_A+OUT_C);Wait(100);
go_straight;Wait(40);
{ /センサー1,3が黒なら
Off(OUT_A+OUT_C);Wait(100); /1秒停止
go_straight;Wait(15); /前進
}
}
}