[[2006a/B7]] *光を追っかけるロボット [#nbabbd53] **今回の課題 [#k63ee5c8] 懐中電灯の光を追いかけて進むロボットを製作し、以下の中から2種類以上のプログラムを作成せよ。 1,光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す&br; 2,光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す&br; 3,光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す&br; 4,上記のいずれかに『光源に近づき過ぎると停止する』という機能を追加する&br; ただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。 **今回のロボット [#e5fa5d42] 準備中 **使った光源、音楽 [#faa9af3e] ***光源 [#y4b7eed0] 音案の携帯(V401D)のライト。センサーに当ててみると最大90まであがった。 ***音楽 [#r2ba0c4e] とりあえず著作権に触れない程度に・・・&br; 1曲目・・・エリーゼのために(ベートヴェン作曲)&br; 2曲目・・・主よ人の望みの喜びよ(バッハ作曲)&br; **光を追っかけるプログラム [#p03bb376] これがないと始まらない。というわけでまず始めに光を追うプログラムを作成。&br; 「光源が近づきすぎると停止するプログラム」も搭載 #define lightmin 50 // #define lightmax 75 // task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサ−2が光センサーであることを宣言 while(true) { OnFwd(OUT_A+OUT_C); // if(SENSOR_2<lightmin) //センサーが { OnFwd(OUT_A); // OnRev(OUT_C); until(SENSOR_2>lightmin); // } if(SENSOR_2>lightmax) { Off(OUT_A+OUT_C); until(SENSOR_2<lightmax); } } } ** [#p036446a] ***プロトタイプ [#u07d4b3d] #define lightmin 50 #define lightmax 75 #define Dod 262 #define Red 294 #define Mid 330 #define Fad 349 #define Fadsha 370 #define Sold 392 #define Sodsha 415 #define Lad 440 #define Ladsha 466 #define Shid 494 #define Do 523 #define Re 587 #define Resha 622 #define Mi 659 #define Fa 698 #define Fasha 740 #define Sol 784 #define La 880 task play_music2() { while (true) { PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Re,15);Wait(20); PlayTone(Do,15) ;Wait(20); PlayTone(Lad,45);Wait(50); PlayTone(Dod,15);Wait(20); PlayTone(Mid,15);Wait(20); PlayTone(Lad,15);Wait(20); PlayTone(Shid,45);Wait(50); PlayTone(Mid,15);Wait(20); PlayTone(Sodsha,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Do,45);Wait(50); PlayTone(Mid,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Re,15);Wait(20); PlayTone(Do,15) ;Wait(20); PlayTone(Lad,45);Wait(50); PlayTone(Dod,15);Wait(20); PlayTone(Mid,15);Wait(20); PlayTone(Lad,15);Wait(20); PlayTone(Shid,45);Wait(50); PlayTone(Mid,15);Wait(20); PlayTone(Do,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Lad,135);Wait(140); Wait(60); } } task play_music1() { while (true) { PlayTone(Sold,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Mi,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Sol,35);Wait(40); PlayTone(Fasha,35);Wait(40); PlayTone(Sol,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Sold,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Mi,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Shid,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Sold,35); Wait(40); PlayTone(Fadsha,35);Wait(40); PlayTone(Sold,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Red,35);Wait(40); PlayTone(Fadsha,35);Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Lad,35);Wait(40); Wait(60); } } task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); while(true) { Off(OUT_A+OUT_C); stop play_music1; stop play_music2; if(SENSOR_2<lightmin) { stop play_music2; start play_music1; OnFwd(OUT_A); OnRev(OUT_C); until(SENSOR_2>lightmin); } if((SENSOR_2<lightmax)&&(SENSOR_2>lightmin)) { stop play_music1; start play_music2; OnFwd(OUT_A+OUT_C); until((SENSOR_2>lightmax)||(SENSOR_2<lightmin)); } } } ***改造版 [#l69ec5c6] #define lightmin 50 #define lightmax 90 #define Fa 698 #define Fasha 740 #define Sol 784 #define La 880 #define Dod 262 #define Mid 330 #define Sodsha 415 #define Lad 440 #define Ladsha 466 #define Shid 494 #define Do 523 #define Re 587 #define Resha 622 #define Mi 659 #define Red 294 #define Fad 349 #define Fadsha 370 #define Sold 392 task play_music2() { while (true) { PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Re,15);Wait(20); PlayTone(Do,15) ;Wait(20); PlayTone(Lad,45);Wait(50); PlayTone(Dod,15);Wait(20); PlayTone(Mid,15);Wait(20); PlayTone(Lad,15);Wait(20); PlayTone(Shid,45);Wait(50); PlayTone(Mid,15);Wait(20); PlayTone(Sodsha,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Do,45);Wait(50); PlayTone(Mid,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Resha,15);Wait(20); PlayTone(Mi,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Re,15);Wait(20); PlayTone(Do,15) ;Wait(20); PlayTone(Lad,45);Wait(50); PlayTone(Dod,15);Wait(20); PlayTone(Mid,15);Wait(20); PlayTone(Lad,15);Wait(20); PlayTone(Shid,45);Wait(50); PlayTone(Mid,15);Wait(20); PlayTone(Do,15);Wait(20); PlayTone(Shid,15);Wait(20); PlayTone(Lad,135);Wait(140); Wait(60); } } task play_music1() { while (true) { PlayTone(Sold,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Mi,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Sol,35);Wait(40); PlayTone(Fasha,35);Wait(40); PlayTone(Sol,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Sold,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Mi,35);Wait(40); PlayTone(Re,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Shid,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Sold,35); Wait(40); PlayTone(Fadsha,35);Wait(40); PlayTone(Sold,35); Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Red,35);Wait(40); PlayTone(Fadsha,35);Wait(40); PlayTone(Lad,35);Wait(40); PlayTone(Do,35);Wait(40); PlayTone(Shid,35);Wait(40); PlayTone(Lad,35);Wait(40); Wait(60); } } task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_1,SENSOR_LIGHT); while(true) { Off(OUT_A+OUT_C); stop play_music1; stop play_music2; if((SENSOR_2<lightmin)&&(SENSOR_1<lightmin)) { stop play_music2; start play_music1; OnFwd(OUT_A); OnRev(OUT_C); until((SENSOR_2>lightmin)||(SENSOR_1>lightmin)); } if((SENSOR_2<lightmin)&&(SENSOR_1>lightmin)) { stop play_music2; start play_music1; OnRev(OUT_A); OnFwd(OUT_C); Wait(30); until((SENSOR_2>lightmin)||(SENSOR_1<lightmin)); } if((SENSOR_2<lightmax)&&(SENSOR_2>lightmin)) { stop play_music1; start play_music2; OnFwd(OUT_A+OUT_C); until((SENSOR_2>lightmax)||(SENSOR_2<lightmin)); } } }