[[2006b/A6/R Room/mission 3]] #contents *プログラム [#ff109757] **製作者/TAKA [#qa88c98f] とりあえず一気に作るのは難しいと感じたので、別々に作りました。 ***旋回して、光を見つけてその方向に進む[#d269e04b] #define TURN_TIME 300 // 一回転するときにかかる時間 task main () { SetSensor (SENSOR_1,SENSOR_LIGHT); // センサー1を光センサーに int light_max=0,time_max; // light_maxとtime_maxを定義 while(true) // trueのとき { ClearTimer(0); // タイマー0をクリアー OnFwd(OUT_A); // Aのモーターを正回転 OnRev(OUT_C); // Cのモーターを負回転 → 車体の回転 while(FastTimer(0)<TURN_TIME) // 一回転の時間よりもFastTimer(0)の方が小さいとき { if(SENSOR_1>light_max) // もしセンサー1がlight_maxよりも大きかったら { light_max=SENSOR_1; // センサー1をlight_maxに設定 time_max=TURN_TIME-FastTimer(0)+10; // time_maxをこの時間に設定 } } Off(OUT_A+OUT_C); // モーターストップ OnFwd(OUT_A+OUT_C); // 前進 } } **音楽を鳴らすプログラム [#z1b05577] -チューリップの歌(題名がわかりません) #define Do 523 // 音の定義 ド #define Re 587 // レ #define Mi 659 // ミ #define Fa 698 // ファ #define So 784 // ソ #define Ra 880 // ラ #define Si 988 // シ #define Doo 1047 // ド task play_music() { while(true) { PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,30);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Do,30);Wait(30); PlayTone(So,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Ra,25);Wait(30); PlayTone(Ra,25);Wait(30); PlayTone(So,30);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Do,30);Wait(30); } } ***課題のプログラム [#p96dff2a] #define turn_time 300 // 一回転にかかる時間 #define Do 523 // 音の定義 #define Re 587 #define Mi 659 #define Fa 698 #define So 784 #define Ra 880 #define Si 988 #define Doo 1047 task play_music_1() { while(true){ PlayTone(SOUND_CLICK); // 音を鳴らす } } task play_music_2() { while(true) // 上に書いた曲を鳴らすプログラム { PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,30);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Do,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Do,30);Wait(30); PlayTone(So,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(So,25);Wait(30); PlayTone(Ra,25);Wait(30); PlayTone(Ra,25);Wait(30); PlayTone(So,30);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Mi,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Re,25);Wait(30); PlayTone(Do,30);Wait(30); } } task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2を光センサーと定義 int lght_max=0,time_max; // light_maxとtime_maxを設定 start play_music_2 // music_2を鳴らす while(true) { ClearTimer(0); // タイマー0をクリアー OnFwd(OUT_A); // Aのモーターを正回転 OnRev(OUT_C); // Cのモーターを負回転 while(FastTimer(0)<TURN_TIME); // TURN_TIMEがFastTimer(0)より大きくなったら { if(SENSOR_2>light_max) // もしセンサー2がlight_maxより大きくなったら { light_max=SENSOR_2; // light_maxをセンサー2の値にする start play_music_1;Wait(30); // music_1を鳴らす stop play_music_1 // music_1を止める time_max=TURN_TIME-FastTimer(0)+10; // time_maxをこの値にする } } Off(OUT_A+OUT_C); // ストップ stop play_music_2; // music_2を止める OnFwd(OUT_A+OUT_C); if(SENSOR_2<light_max) // もしlight_maxがセンサー2の値より大きくなったら { Off(OUT_A+OUT_C); とまる Wait(30); while(true) // ※ここから下のプログラムは上のプログラムを繰り返すので説明省略 { ClearTimer(0); OnFwd(OUT_A); OnRev(OUT_C); while(FastTimer(0)<TURN_TIME); { if(SENSOR_2>light_max) { light_max=SENSOR_2; start play_music_2;Wait(30); stop play_music_1 time_max=TURN_TIME-FastTimer(0)+10; } } Off(OUT_A+OUT_C); stop play_music_2; OnFwd(OUT_C); OnRev(OUT_A); Wait(time_max); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); } } **製作者/またたび [#de77bb3b]