◇目次◇
懐中電灯の光を追いかけて進むロボットを製作し、以下の中から2種類以上のプログラムを作成せよ。
1. 光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す
2. 光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す
3. 光源を見失っていないときにはある曲を演奏し、見失った時には別の曲警を演奏しながら光源を探す
4. 上記のいずれかに『光源に近づき過ぎると停止する』という機能を追加する
ただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。
(期限:7月6日)〜2006a/練習問題より抜粋〜
作成者:ヨコチン/トシ/J/マサ 作成日時:7/5,7/6
プログラミング作成者:ヨコチン/トシ/J/マサ
#define go_straight OnFwd(OUT_A+OUT_C); //直進 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右旋回 #define turn_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回 #define minus 15 //マイナス int max; //maxを定義 int time; //timeを定義 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2:光センサー max=SENSOR_2; //センサー2をmaxに指定 time=Timer(0); //timeをタイマー0に指定 ClearTimer(0); //タイマー0をリセット while(Timer(0)<=14) //タイマー0が14以下の時 { turn_right //右旋回 if(SENSOR_2>max) //センサー2が最大値以上なら { ClearTimer(1); //タイマー1をリセット max=SENSOR_2 ; //センサー2を最大値に指定 } else //そうでなければ { max=max; //maxをそのまま time=Timer(1); //timeをタイマー1に指定 } } ClearTimer(1); //タイマー1をリセット while(Timer(1)<=time) //timeがタイマー以下の時 {turn_left} //左旋回 while(true) { if(SENSOR_2>=max-minus) //センサー2が最大値−マイナス以上の時 {go_straight} //直進 if(SENSOR_2<max-minus) //センサー2が最大値−マイナス未満の時 { turn_right //右旋回 ClearTimer(2); //タイマー2をリセット until((SENSOR_2>=max-minus)||(Timer(2)==5)); //センサー2が最大値−マイナス以上、またはタイマー2が5まで } if(SENSOR_2<max-minus) //まだセンサー2が最大値−マイナス未満の時 { turn_left //左旋回 until(SENSOR_2>=max-minus); //センサー2が最大 値−マイナス以上まで } } }
プログラミング作成者:ヨコチン/トシ/J/マサ
#define go_straight OnFwd(OUT_A+OUT_C); #define turn_left OnRev(OUT_A);OnFwd(OUT_C); #define Do 523 //「ド」 #define Re 587 //「レ」 #define Mi 659 //[ミ」 #define Fa 698 //「ファ」 #define Sol 784 //「ソ」 task play_music() { while(true) { PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,30); Wait(40); //「ミ」 PlayTone(Re,15); Wait(20); //「レ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Do,15); Wait(40); //「ド」 PlayTone(Re,25); Wait(30); //「レ」 PlayTone(Re,25); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Fa,15); Wait(20); //「ファ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Fa,15); Wait(20); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,30); Wait(30); //「ド」 PlayTone(Re,30); Wait(30); //「レ」 PlayTone(Sol,30); Wait(30); //「ソ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Do,15); Wait(20); //「ド」
光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す。
曲→喜びの歌
プログラミング作成者:ヨコチン/トシ/J/マサ
#define go_straight OnFwd(OUT_A+OUT_C); #define turn_left OnRev(OUT_A);OnFwd(OUT_C); #define Do 523 //「ド」 #define Re 587 //「レ」 #define Mi 659 //[ミ」 #define Fa 698 //「ファ」 #define Sol 784 //「ソ」 task play_music() { while(true) { PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,30); Wait(40); //「ミ」 PlayTone(Re,15); Wait(20); //「レ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Do,15); Wait(40); //「ド」 PlayTone(Re,25); Wait(30); //「レ」 PlayTone(Re,25); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Fa,15); Wait(20); //「ファ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Fa,15); Wait(20); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,30); Wait(30); //「ド」 PlayTone(Re,30); Wait(30); //「レ」 PlayTone(Sol,30); Wait(30); //「ソ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Do,15); Wait(20); //「ド」 Wait(40); } } task main () { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサ−2を光センサーと定義 while(true) { start play_music; //音楽スタート while (SENSOR_2 <50) //光の強さが50未満のとき { turn_left; //左回転 } while (SENSOR_2 >50) //光の強さが50より大のとき { stop play_music; //音楽ストップ go_straight; //直進 } } }
光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す。
曲→1→喜びの歌、2→ドレミの歌
プログラミング作成者:ヨコチン/トシ/J/マサ
#define go_straight OnFwd(OUT_A+OUT_C); #define turn_left OnRev(OUT_A);OnFwd(OUT_C); #define Do 523 //「ド」 #define Re 587 //「レ」 #define Mi 659 //「ミ」 #define Fa 698 //「ファ」 #define Sol 784 //「ソ」 task play_music1() //曲1 { while(true) { PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,30); Wait(40); //「ミ」 PlayTone(Re,15); Wait(20); //「レ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Do,15); Wait(40); //「ド」 PlayTone(Re,25); Wait(30); //「レ」 PlayTone(Re,25); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Fa,15); Wait(20); //「ファ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,15); Wait(20); //「ミ」 PlayTone(Fa,15); Wait(20); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,30); Wait(30); //「ド」 PlayTone(Re,30); Wait(30); //「レ」 PlayTone(Sol,30); Wait(30); //「ソ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Sol,20); Wait(30); //「ソ」 PlayTone(Fa,20); Wait(30); //「ファ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Do,20); Wait(30); //「ド」 PlayTone(Re,20); Wait(30); //「レ」 PlayTone(Mi,20); Wait(30); //「ミ」 PlayTone(Re,30); Wait(40); //「レ」 PlayTone(Do,15); Wait(20); //「ド」 PlayTone(Do,15); Wait(20); //「ド」 Wait(40); } } task play_music2() //曲2 { while(true) { PlayTone(Do,25); Wait(20); //「ド」 PlayTone(Re, 5); Wait(20); //「レ」 PlayTone(Mi,25); Wait(20); //「ミ」 PlayTone(Do, 5); Wait(20); //「ド」 PlayTone(Mi,25); Wait(20); //「ミ」 PlayTone(Do, 5); Wait(20); //「ド」 PlayTone(Mi,35); Wait(40); //「ミ」 PlayTone(Re,25); Wait(20); //「レ」 PlayTone(Mi,10); Wait(20); //「ミ」 PlayTone(Fa,10); Wait(20); //「ファ」 PlayTone(Fa,10); Wait(20); //「ファ」 PlayTone(Mi,10); Wait(20); //「ミ」 PlayTone(Re,15); Wait(20); //「レ」 PlayTone(Fa,35); Wait(40); //「ファ」 PlayTone(Mi,25); Wait(20); //「ミ」 PlayTone(Fa, 5); Wait(20); //「ファ」 PlayTone(Sol,25); Wait(20); //「ソ」 PlayTone(Mi, 5); Wait(20); //「ミ」 PlayTone(Sol,25); Wait(20); //「ソ」 PlayTone(Mi, 5); Wait(20); //「ミ」 PlayTone(Sol,25); Wait(40); //「ソ」 } } task main () { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2を光センサーと定義 while(true) { stop play_music2; //音楽2ストップ start play_music1; //音楽1スタート while (SENSOR_2 <50) //光の強さが50未満のとき { turn_left; //左回転 } stop play_music1; //音楽1ストップ start play_music2; //音楽2スタート while (SENSOR_2 >50) //光の強さが50より大のとき { go_straight; //直進 } } }
コメントやアドバイスお願いします☆