◇課題3『光を追いかけるロボット』
制作者/takumi&kaz
#define turn_right OnFwd(OUT_A);OnRev(OUT_C); #define turn_left OnFwd(OUT_C);OnRev(OUT_A); #define go_straight OnFwd(OUT_A+OUT_C) #define light 50 #define Sol 392 #define Do 523 #define Re 587 #define Mi 659 task play_music() //学校のチャイム { while (true) { PlayTone(Do,50);Wait(35); PlayTone(Mi,50);Wait(35); PlayTone(Re,50);Wait(35); PlayTone(Sol,80);Wait(70); PlayTone(Do,50);Wait(35); PlayTone(Re,50);Wait(35); PlayTone(Mi,50);Wait(35); PlayTone(Do,80);Wait(70); PlayTone(Mi,50);Wait(35); PlayTone(Do,50);Wait(35); PlayTone(Re,50);Wait(35); PlayTone(Sol,80);Wait(70); PlayTone(Sol,50);Wait(35); PlayTone(Re,50);Wait(35); PlayTone(Mi,50);Wait(35); PlayTone(Do,80);Wait(70); } } task main(){ int max_right,time_max; SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1を光センサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ−3を光センサーと定義 while(true){ if(SENSOR_1>light&&SENSOR_3<light){ //左側のセンサーが反応 turn_left; //左回転 Wait(10); } if(SENSOR_1<light&&SENSOR_3>light){ //右側のセンサーが反応 turn_right; //右回転 Wait(10); } if(SENSOR_1<light&&SENSOR_3<light){ //両方のセンサーが反応しない start play_music; //音楽スタート while(SENSOR_1<light||SENSOR_3<light){//両方のセンサーが反応するまで… turn_left //左回転 Wait(10); until(SENSOR_1>light||SENSOR_3>light); stop play_music; //音楽ストップ } } if(SENSOR_1>light&&SENSOR_3>light){ //両方のセンサーが反応 go_straight; //直進 } } }
先生のプログラムをあまり参考にしなかったところ、始めは何をしたらよいかわからなく、途方に暮れていましたが、昔のグループの「タッチセンサーの光版と考えれば…」という記述を見て、そのように制作してみたところ、結構上手に完成しました。 次に苦労したのは、光を探している間、曲が流れるところで、なかなか上手くいかなかったけれど、「start play_music」と「stop play_music」の位置を変えているうちになんとか解決。どうやらストップの位置が悪かったようだ。
外見はこのように今までで一番シンプルです。
スイッチ....
オン!!
↑上の写真で赤く光ったところが光センサーです。
そして下の画像のように光(懐中電灯など..)に反応してカエルの合唱の唄を歌いながら光を追いかけるように動きます。