2006a/A1/僕プログラム
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[ロボティクス入門ゼミ]]
*ライントレース2 [#z7016f24]
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) // (1)黒線上に いるとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_3 < THRESHOLD) // (3)黒線上にいるとき
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_2==1 )
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(70); //タッチしたら180°反転する
OnFwd(OUT_C);wWait(30);
OnFwd(OUT_C);OnRev(OUT_A);Wait(70);
OnFwd(OUT_A);Wait(200);
OnFwd(OUT_C);OnRev(OUT_A);Wait(90);
OnFwd(OUT_A);
}
}
*ライントレース1 [#a5949867]
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) // (1)黒線上にいるとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_3 < THRESHOLD) // (3)黒線上にいるとき
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_2==1 )
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(150); //タッチしたら180°反転する
OnFwd(OUT_C);
}
}
}
*改良作品 [#xf6923c4]
/* 黒い線をトレースするロボット のプログラム */
#define THRESHOLD 40 // 閾値
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) // (1)黒線上にいるとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_3 < THRESHOLD) // (3)黒線上にいるとき
{
OnFwd(OUT_C);
Off(OUT_A);
}
}
}
*試作 [#q945510a]
/* ?????????g??Å[?X???????{?b?g ???v???O???? */
#define THRESHOLD 40 // ???l
task main ()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_A+OUT_C);
if (SENSOR_2 < THRESHOLD)
{ // ???????…???????´
OnFwd(OUT_A);
Off(OUT_C);
}
else
{ // ?????????O???Ω???´
Off(OUT_A);
OnFwd(OUT_C);
}
if (SENSOR_1==1 )
{
OnFwd(OUT_A);OnRev(OUT_C); Wait(150);
OnFwd(OUT_C);
}
if (SENSOR_3==1 )
{
OnFwd(OUT_C);OnRev(OUT_A); Wait(150);
OnFwd(OUT_A);
}
}
*6月2日 [#h252caf1]
**タッチセンサーを使ったプログラム [#t8eefb15]
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
while(true)
{
OnFwd(OUT_A+OUT_C);
until ((SENSOR_1==1) || (SENSOR_3==1));
OnRev(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A);Wait(150);
OnFwd(OUT_C);
}
}
**ifバージョン [#p777d05f]
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_A+OUT_C);
while(true)
{
if (SENSOR_1==1 )
{
OnRev(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_A);OnRev(OUT_C); Wait(100);
OnFwd(OUT_C);
}
if (SENSOR_3==1 )
{
OnRev(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_C);OnRev(OUT_A); Wait(100);
OnFwd(OUT_A);
}
}
}
*5月13日 [#icb17dc5]
**課題1...書道ロボット...『水』 [#u21d8dc0]
task main()
task main()
{
OnFwd(OUT_A+OUT_C);
Wait(200);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(135);
OnFwd(OUT_A+OUT_C);
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(5);
Off(OUT_B);
OnFwd(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(108);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(5);
Off(OUT_B);
OnFwd(OUT_A+OUT_C);
Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(41);
OnRev(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(5);
Off(OUT_B);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(16);
Off(OUT_A+OUT_C);
OnFwd(OUT_A+OUT_C);
Wait(170);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(20);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
OnRev(OUT_A+OUT_C);
Wait(60);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(40);
OnFwd(OUT_A+OUT_C);
Wait(120);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(5);
Off(OUT_B);
}
// 作成者:
// 作成日:2006-5-23
#define back(t) OnFwd(OUT_C);Wait(t);Off(OUT_C);
#define front(t) OnRev(OUT_C);Wait(t);Off(OUT_C);
#define right(t) OnRev(OUT_B);Wait(t);Off(OUT_B);
#define left(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);
#define up OnFwd(OUT_A);Wait(30);Off(OUT_A);
#define down OnRev(OUT_A);Wait(30);Off(OUT_A);
task main()
{
down(30);back(150); //1
OnRev(OUT_C);OnFwd(OUT_B);Wait(10);Off(OUT_C+OUT_B);
up;left(20);front(115);
down;right(30);
OnFwd(OUT_C+OUT_B);Wait(30);Off(OUT_C+OUT_B);
up;right(70);
}
*6//23 [#xc0ca91e]
#define TURN_TIME 200
#define light(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);
int light_max=(0);
int time_max=(0);
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
OnFwd(OUT_A);OnRev(OUT_C);
while(FastTimer(0)<TURN_TIME);
{
if(SENSOR_1>light_max);
{
light_max=SENSOR_1;
time_max=FastTimer(0);
}
light (200-time_max);
OnRev(OUT_A+OUT_C);Wait(50);Off(OUT_A+OUT_C);
}
}
else+右旋回
#define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) //黒線上にきたらAを回転
{
OnFwd(OUT_A);
Off(OUT_C);
}
else
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_3 < THRESHOLD) //黒線上にきたらCを回転
{
OnFwd(OUT_C);
Off(OUT_A);
}
else
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_2==1 ) //ぶつかったら右から避ける
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(70);
OnFwd(OUT_C);Wait(150);
OnFwd(OUT_C);OnRev(OUT_A);Wait(70);
OnFwd(OUT_A);Wait(300);
OnFwd(OUT_C);OnRev(OUT_A);Wait(90);
OnFwd(OUT_A);
}
}
}
else+半回転
#define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) //黒線上にきたらAを回転
{
OnFwd(OUT_A);
Off(OUT_C);
}
else
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_3 < THRESHOLD) //黒線上にきたらCを回転
{
OnFwd(OUT_C);
Off(OUT_A);
}
else
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_2==1 ) //ぶつかったら半回転
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(150);
}
}
}
else+右旋回
#define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) //黒線上にきたらAを回転
{
OnFwd(OUT_A);
Off(OUT_C);
}
else
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_3 < THRESHOLD) //黒線上にきたらCを回転
{
OnFwd(OUT_C);
Off(OUT_A);
}
else
{
OnFwd(OUT_A);
Off(OUT_C);
}
if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD))
{
OnFwd(OUT_A);OnFwd(OUT_C);
}
if (SENSOR_2==1 ) //ぶつかったら半回転
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(150);
}
}
}
*7/7 [#nc9e91fc]
**明るい方向へ・「第六の幸運をもたらす宿」 [#v72eebf6]
#define C 523
#define D 587
#define E 659
#define F 698
#define G 784
#define A 440
#define B 494
task play_music(1)
{
while(true)
{
PlayTone(G,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(G,50);Wait(55);
PlayTone(G,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(G,50);Wait(55);
PlayTone(A,25);Wait(30);
PlayTone(G,25);Wait(30);
PlayTone(F,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(D,25);Wait(80);
PlayTone(E,25);Wait(30);
PlayTone(F,50);Wait(55);
PlayTone(G,25);Wait(30);
PlayTone(C,25);Wait(30);
PlayTone(C,25);Wait(30);
PlayTone(C,25);Wait(30);
PlayTone(C,12);Wait(17);
PlayTone(D,12);Wait(17);
PlayTone(E,12);Wait(17);
PlayTone(F,12);Wait(17);
PlayTone(G,50);Wait(55);
PlayTone(G,25);Wait(30);
PlayTone(D,25);Wait(30);
PlayTone(D,25);Wait(30);
PlayTone(F,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(D,25);Wait(30);
PlayTone(C,50);Wait(55);
Wait(20);
}
}
#define C 523
#define C# 554
#define D 587
#define D# 622
#define E 659
#define F 698
#define F# 740
#define G 784
#define G# 831
#define A 440
#define A# 446
#define B 494
task play_music(2) //音楽を演奏するタスク
{
while(true)
{
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(C,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(A,50);Wait(40);
PlayTone(G,33);Wait(23);
PlayTone(F,33);Wait(23);
PlayTone(G,33);Wait(23);
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(E,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(F,33);Wait(23);
PlayTone(E,33);Wait(23);
PlayTone(F,33);Wait(23);
PlayTone(E,50);Wait(40);
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(C,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(A,50);Wait(40);
PlayTone(G,33);Wait(23);
PlayTone(F,33);Wait(23);
PlayTone(G,33);Wait(23);
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(E,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(F,33);Wait(23);
PlayTone(E,33);Wait(23);
PlayTone(D,33);Wait(23);
PlayTone(C,100);Wait(90);
Wait(50);
}
}
#define TURN_TIME 200
#define right(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);
#define left(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);
#define front OnFwd?(OUT_A+OUT_C);
task main ()
{
int light_max=0;
int time_max=0;
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
light_max=SENSOR_1; //センサー1が最大
ClearTimer(0); //タイマーを0
OnFwd(OUT_A);OnRev(OUT_C); //光を探す左回転
while(time_max<TURN_TIME){ //タイマーは20秒以内
start play_music ;
if(SENSOR_1>light_max) //もし1が最大なら
{
light_max=SENSOR_1;//最大値を更新
time_max=FastTimer(0);
}
left(200-time_max); //一周から時間を差し引い
front;
}
while(true)
{
if((SENSOR_1>=light_max)&&(SENSOR_3>=light_max))
{
front;
}
if((SENSOR_1<=light_max)&&(SENSOR_3>=light_max))
{
OnRev(OUT_A);OnFwd(OUT_C);
until((SENSOR_1>=light_max)&&(SENSOR_3>=light_max));
}
if((SENSOR_1>=light_max)&&(SENSOR_3<=light_max))
{
OnFwd(OUT_A);OnRev(OUT_C);
until((SENSOR_1>=light_max)&&(SENSOR_3>=light_max));
}
}
}
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetPower(OUT_A,2);
SetPower(OUT_C,2);
SetPower(OUT_B,5);
ClearTimer(0);
OnFwd(OUT_A+OUT_C);
while (true)
{
if(SENSOR_1==1)
{
Off(OUT_A+OUT_C);Wait(100);
OnFwd(OUT_B);
OnFwd(OUT_A+OUT_C);Wait(150);
Off(OUT_A+OUT_C);
OnRev(OUT_B);Wait(50);
OnRev(OUT_A+OUT_C);Wait(100);
Off(OUT_A+OUT_C+OUT_B);Wait(300);
OnFwd(OUT_A+OUT_C);Wait(150);
OnFwd(OUT_A+OUT_C);
while(true)
if(SENSOR_1==1)
{
Off(OUT_A+OUT_B);
OnFwd(OUT_B);Wait(100);
OnRev(OUT_A+OUT_C);Wait(150);
OnRev(OUT_B);Wait(50);
Off(OUT_A+OUT_C+OUT_B);
}
}
}
}
終了行:
[[ロボティクス入門ゼミ]]
*ライントレース2 [#z7016f24]
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) // (1)黒線上に いるとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_3 < THRESHOLD) // (3)黒線上にいるとき
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_2==1 )
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(70); //タッチしたら180°反転する
OnFwd(OUT_C);wWait(30);
OnFwd(OUT_C);OnRev(OUT_A);Wait(70);
OnFwd(OUT_A);Wait(200);
OnFwd(OUT_C);OnRev(OUT_A);Wait(90);
OnFwd(OUT_A);
}
}
*ライントレース1 [#a5949867]
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) // (1)黒線上にいるとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_3 < THRESHOLD) // (3)黒線上にいるとき
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_2==1 )
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(150); //タッチしたら180°反転する
OnFwd(OUT_C);
}
}
}
*改良作品 [#xf6923c4]
/* 黒い線をトレースするロボット のプログラム */
#define THRESHOLD 40 // 閾値
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) // (1)黒線上にいるとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_3 < THRESHOLD) // (3)黒線上にいるとき
{
OnFwd(OUT_C);
Off(OUT_A);
}
}
}
*試作 [#q945510a]
/* ?????????g??Å[?X???????{?b?g ???v???O???? */
#define THRESHOLD 40 // ???l
task main ()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_A+OUT_C);
if (SENSOR_2 < THRESHOLD)
{ // ???????…???????´
OnFwd(OUT_A);
Off(OUT_C);
}
else
{ // ?????????O???Ω???´
Off(OUT_A);
OnFwd(OUT_C);
}
if (SENSOR_1==1 )
{
OnFwd(OUT_A);OnRev(OUT_C); Wait(150);
OnFwd(OUT_C);
}
if (SENSOR_3==1 )
{
OnFwd(OUT_C);OnRev(OUT_A); Wait(150);
OnFwd(OUT_A);
}
}
*6月2日 [#h252caf1]
**タッチセンサーを使ったプログラム [#t8eefb15]
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
while(true)
{
OnFwd(OUT_A+OUT_C);
until ((SENSOR_1==1) || (SENSOR_3==1));
OnRev(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A);Wait(150);
OnFwd(OUT_C);
}
}
**ifバージョン [#p777d05f]
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_A+OUT_C);
while(true)
{
if (SENSOR_1==1 )
{
OnRev(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_A);OnRev(OUT_C); Wait(100);
OnFwd(OUT_C);
}
if (SENSOR_3==1 )
{
OnRev(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_C);OnRev(OUT_A); Wait(100);
OnFwd(OUT_A);
}
}
}
*5月13日 [#icb17dc5]
**課題1...書道ロボット...『水』 [#u21d8dc0]
task main()
task main()
{
OnFwd(OUT_A+OUT_C);
Wait(200);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(135);
OnFwd(OUT_A+OUT_C);
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(5);
Off(OUT_B);
OnFwd(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(108);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(5);
Off(OUT_B);
OnFwd(OUT_A+OUT_C);
Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(41);
OnRev(OUT_A+OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(5);
Off(OUT_B);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(16);
Off(OUT_A+OUT_C);
OnFwd(OUT_A+OUT_C);
Wait(170);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(20);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
OnRev(OUT_A+OUT_C);
Wait(60);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(40);
OnFwd(OUT_A+OUT_C);
Wait(120);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(5);
Off(OUT_B);
}
// 作成者:
// 作成日:2006-5-23
#define back(t) OnFwd(OUT_C);Wait(t);Off(OUT_C);
#define front(t) OnRev(OUT_C);Wait(t);Off(OUT_C);
#define right(t) OnRev(OUT_B);Wait(t);Off(OUT_B);
#define left(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);
#define up OnFwd(OUT_A);Wait(30);Off(OUT_A);
#define down OnRev(OUT_A);Wait(30);Off(OUT_A);
task main()
{
down(30);back(150); //1
OnRev(OUT_C);OnFwd(OUT_B);Wait(10);Off(OUT_C+OUT_B);
up;left(20);front(115);
down;right(30);
OnFwd(OUT_C+OUT_B);Wait(30);Off(OUT_C+OUT_B);
up;right(70);
}
*6//23 [#xc0ca91e]
#define TURN_TIME 200
#define light(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);
int light_max=(0);
int time_max=(0);
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
OnFwd(OUT_A);OnRev(OUT_C);
while(FastTimer(0)<TURN_TIME);
{
if(SENSOR_1>light_max);
{
light_max=SENSOR_1;
time_max=FastTimer(0);
}
light (200-time_max);
OnRev(OUT_A+OUT_C);Wait(50);Off(OUT_A+OUT_C);
}
}
else+右旋回
#define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) //黒線上にきたらAを回転
{
OnFwd(OUT_A);
Off(OUT_C);
}
else
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_3 < THRESHOLD) //黒線上にきたらCを回転
{
OnFwd(OUT_C);
Off(OUT_A);
}
else
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_2==1 ) //ぶつかったら右から避ける
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(70);
OnFwd(OUT_C);Wait(150);
OnFwd(OUT_C);OnRev(OUT_A);Wait(70);
OnFwd(OUT_A);Wait(300);
OnFwd(OUT_C);OnRev(OUT_A);Wait(90);
OnFwd(OUT_A);
}
}
}
else+半回転
#define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) //黒線上にきたらAを回転
{
OnFwd(OUT_A);
Off(OUT_C);
}
else
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_3 < THRESHOLD) //黒線上にきたらCを回転
{
OnFwd(OUT_C);
Off(OUT_A);
}
else
{
OnFwd(OUT_A);
Off(OUT_C);
}
if (SENSOR_2==1 ) //ぶつかったら半回転
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(150);
}
}
}
else+右旋回
#define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_TOUCH);
while (true)
{
if (SENSOR_1 < THRESHOLD) //黒線上にきたらAを回転
{
OnFwd(OUT_A);
Off(OUT_C);
}
else
{
OnFwd(OUT_C);
Off(OUT_A);
}
if (SENSOR_3 < THRESHOLD) //黒線上にきたらCを回転
{
OnFwd(OUT_C);
Off(OUT_A);
}
else
{
OnFwd(OUT_A);
Off(OUT_C);
}
if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD))
{
OnFwd(OUT_A);OnFwd(OUT_C);
}
if (SENSOR_2==1 ) //ぶつかったら半回転
{
OnFwd(OUT_A);OnRev(OUT_C);Wait(150);
}
}
}
*7/7 [#nc9e91fc]
**明るい方向へ・「第六の幸運をもたらす宿」 [#v72eebf6]
#define C 523
#define D 587
#define E 659
#define F 698
#define G 784
#define A 440
#define B 494
task play_music(1)
{
while(true)
{
PlayTone(G,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(G,50);Wait(55);
PlayTone(G,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(G,50);Wait(55);
PlayTone(A,25);Wait(30);
PlayTone(G,25);Wait(30);
PlayTone(F,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(D,25);Wait(80);
PlayTone(E,25);Wait(30);
PlayTone(F,50);Wait(55);
PlayTone(G,25);Wait(30);
PlayTone(C,25);Wait(30);
PlayTone(C,25);Wait(30);
PlayTone(C,25);Wait(30);
PlayTone(C,12);Wait(17);
PlayTone(D,12);Wait(17);
PlayTone(E,12);Wait(17);
PlayTone(F,12);Wait(17);
PlayTone(G,50);Wait(55);
PlayTone(G,25);Wait(30);
PlayTone(D,25);Wait(30);
PlayTone(D,25);Wait(30);
PlayTone(F,25);Wait(30);
PlayTone(E,25);Wait(30);
PlayTone(D,25);Wait(30);
PlayTone(C,50);Wait(55);
Wait(20);
}
}
#define C 523
#define C# 554
#define D 587
#define D# 622
#define E 659
#define F 698
#define F# 740
#define G 784
#define G# 831
#define A 440
#define A# 446
#define B 494
task play_music(2) //音楽を演奏するタスク
{
while(true)
{
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(C,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(A,50);Wait(40);
PlayTone(G,33);Wait(23);
PlayTone(F,33);Wait(23);
PlayTone(G,33);Wait(23);
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(E,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(F,33);Wait(23);
PlayTone(E,33);Wait(23);
PlayTone(F,33);Wait(23);
PlayTone(E,50);Wait(40);
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(C,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(A,50);Wait(40);
PlayTone(G,33);Wait(23);
PlayTone(F,33);Wait(23);
PlayTone(G,33);Wait(23);
PlayTone(E,50);Wait(40);
PlayTone(D,25);Wait(15);
PlayTone(C,25);Wait(15);
PlayTone(C,75);Wait(65);
PlayTone(E,25);Wait(15);
PlayTone(G,50);Wait(40);
PlayTone(F,33);Wait(23);
PlayTone(E,33);Wait(23);
PlayTone(D,33);Wait(23);
PlayTone(C,100);Wait(90);
Wait(50);
}
}
#define TURN_TIME 200
#define right(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);
#define left(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);
#define front OnFwd?(OUT_A+OUT_C);
task main ()
{
int light_max=0;
int time_max=0;
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
light_max=SENSOR_1; //センサー1が最大
ClearTimer(0); //タイマーを0
OnFwd(OUT_A);OnRev(OUT_C); //光を探す左回転
while(time_max<TURN_TIME){ //タイマーは20秒以内
start play_music ;
if(SENSOR_1>light_max) //もし1が最大なら
{
light_max=SENSOR_1;//最大値を更新
time_max=FastTimer(0);
}
left(200-time_max); //一周から時間を差し引い
front;
}
while(true)
{
if((SENSOR_1>=light_max)&&(SENSOR_3>=light_max))
{
front;
}
if((SENSOR_1<=light_max)&&(SENSOR_3>=light_max))
{
OnRev(OUT_A);OnFwd(OUT_C);
until((SENSOR_1>=light_max)&&(SENSOR_3>=light_max));
}
if((SENSOR_1>=light_max)&&(SENSOR_3<=light_max))
{
OnFwd(OUT_A);OnRev(OUT_C);
until((SENSOR_1>=light_max)&&(SENSOR_3>=light_max));
}
}
}
task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetPower(OUT_A,2);
SetPower(OUT_C,2);
SetPower(OUT_B,5);
ClearTimer(0);
OnFwd(OUT_A+OUT_C);
while (true)
{
if(SENSOR_1==1)
{
Off(OUT_A+OUT_C);Wait(100);
OnFwd(OUT_B);
OnFwd(OUT_A+OUT_C);Wait(150);
Off(OUT_A+OUT_C);
OnRev(OUT_B);Wait(50);
OnRev(OUT_A+OUT_C);Wait(100);
Off(OUT_A+OUT_C+OUT_B);Wait(300);
OnFwd(OUT_A+OUT_C);Wait(150);
OnFwd(OUT_A+OUT_C);
while(true)
if(SENSOR_1==1)
{
Off(OUT_A+OUT_B);
OnFwd(OUT_B);Wait(100);
OnRev(OUT_A+OUT_C);Wait(150);
OnRev(OUT_B);Wait(50);
Off(OUT_A+OUT_C+OUT_B);
}
}
}
}
ページ名: