[[2006a/B5]] *光を追いかけるロボット [#i150c5d2] **光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探すプログラム [#ea631c4d] task main () { SetSensor (SENSOR_1, SENSOR_LIGHT); SetSensor (SENSOR_2, SENSOR_LIGHT); while (true) { if(SENSOR_1 > SENSOR_3) //SENSOR_1の値がSENSOR_3の値より大きい場合 { OnFwd(OUT_A); Off(OUT_C); PlayTone(SENSOR_1 * 10, 3); //SENSOR_1の値の10倍の周波数の音を出しながら右に旋回 } if(SENSOR_1 < SENSOR_3) //SENSOR_3の値がSENSOR_1の値より大きい場合 { OnFwd(OUT_C); Off(OUT_A); PlayTone(SENSOR_3 * 10, 3); //SENSOR_3の値の10倍の周波数の音を出しながら左に旋回 } } } ***工夫 [#ecc8422d] -二つのセンサーに角度をつけ、左右のセンサーのとる値がはっきり分かれるようにした **光を見失ったら、曲を演奏しながら光を探す [#dccc4295] //------------------------音楽----------------------- #define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define Sol 784 #define Ra 880 #define Si 988 #define Doa 1047 #define Rea 1175 #define Mia 1319 #define Faa 1397 task music() //音楽演奏用タスク[music] { while (true) //↓演奏プログラム[高橋] { PlayTone(Mi,15); Wait(20); //も PlayTone(Sol,15); Wait(20); //え PlayTone(Doa,15); Wait(20); //あ PlayTone(Doa,35); Wait(40); //が〜 PlayTone(Doa,55); Wait(60); //れ〜 PlayTone(Mi,15); Wait(20); //も PlayTone(Sol,15); Wait(20); //え PlayTone(Doa,15); Wait(20); //あ PlayTone(Doa,35); Wait(40); //が〜 PlayTone(Doa,55); Wait(60); //れ〜 PlayTone(Fa,15); Wait(20); //も PlayTone(Ra,15); Wait(20); //え PlayTone(Doa,15); Wait(20); //あ PlayTone(Doa,35); Wait(40); //が〜 PlayTone(Doa,55); Wait(60); //れ〜 PlayTone(Si,15); Wait(20); //が PlayTone(Ra,15); Wait(20); //ん PlayTone(Si,15); Wait(20); //だ PlayTone(Si,95); Wait(100); //む〜 } } //----------------------音楽ここまで----------------------- // //-------------------------メイン-------------------------- // task main () { SetSensor (SENSOR_1, SENSOR_LIGHT); //センサー1,2を光センサーに設定 SetSensor (SENSOR_2, SENSOR_LIGHT); int music_flag = 0; //変数(スイッチ)music_flagを作る 初期値0 //-----------------------↓-繰り返し-↓-------------------- while (true) { // //========センサー1======== if(SENSOR_1 < 60 ) //センサー1の値が60以下のとき { if (music_flag == 0) //music_flagが0ならば { start music; //演奏をスタートし music_flag = 1; //music_flagの値を1に置き換え } }else{ //センサー1が60以上のとき if (music_flag == 1) //music_flagが1ならば { stop music; //演奏をストップし music_flag = 0; //music_flagの値を0に置き換え } } //=========センサー3======== if(SENSOR_3 < 60 ) //センサー3の値が60以下のとき { if (music_flag == 0) //music_flagが0ならば { start music; //演奏をスタートし music_flag = 1; //music_flagの値を1に置き換え } }else{ //センサー3が60以上のとき if (music_flag == 1) //music_flagが1ならば { stop music; //演奏をストップし music_flag = 0; //music_flagの値を0に置き換え } } //==========光を追いかける基本プログラム========= if(SENSOR_1 > SENSOR_3) //センサー1がセンサー3より大きければ { OnFwd(OUT_A); //Aを回転 Off(OUT_C); } if(SENSOR_1 < SENSOR_3) //センサー3がセンサー1より大きければ { OnFwd(OUT_C); //Cを回転 Off(OUT_A); } } //---------------------↑-繰り返し-↑----------------------- } // 丸岡 ***分かりにくいので [#p69fa653] フローチャート始めました( 'Д')ノ #ref(2006a/B5/課題3右/フローチャート.JPG); -この動作をセンサー1,2それぞれについて行う -music_flagが1のとき、音楽を演奏し、0のときは演奏をやめる -同時に明るいほうへ進むプログラムも実行されている ***工夫 [#o2a01b03] -スイッチ[music_flag]を使い、start music が何度も繰り返される誤作動を修正した -本体のタイヤ間の距離を、やや縮め、小回りがきくようにした -二つのセンサーに角度をつけ、左右のセンサーのとる値がはっきり分かれるようにした *コメントはこちらから↓ [#k9b1c1d4] #comment