【メニュー】
懐中電灯の光を追いかけて進むロボットを製作し、以下1〜4の中から2種類以上のプログラムを作成せよ。
ただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。
(期限:7月6日)
両方一時に完成する事は難しいので、一つ一つのプログラムから作成していく事にした。
作成者:イケス・カツヤ・ウメ・カトゥ 日時:7月6日(木)
#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が最大値?マイナス以上まで } } }
『プログラム』
作成者:イケス・カトゥ
#define Mi 330 #define Fa 349 #define So 392 #define Ra 440 #define Si 494 #define Do 523 #define Re 587 #define mi 659 task play_music() { while (true) { PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,120); Wait(150); PlayTone(Do,30); Wait(35); PlayTone(Re,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,120); Wait(150); PlayTone(Si,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Ra,120); Wait(150); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,90); Wait(120); PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,120); Wait(150); PlayTone(Do,30); Wait(35); PlayTone(Re,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,120); Wait(150); PlayTone(Si,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Ra,120); Wait(150); PlayTone(Mi,30); Wait(35); PlayTone(Fa,30); Wait(35); PlayTone(Mi,30); Wait(35); PlayTone(Mi,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(mi,60); Wait(70); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Fa,60); Wait(70); PlayTone(Ra,60); Wait(65); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,60); Wait(70); PlayTone(Fa,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(mi,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Fa,60); Wait(70); PlayTone(Ra,60); Wait(65); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Ra,90); Wait(95); PlayTone(Ra,90); Wait(95); PlayTone(So,60); Wait(65); PlayTone(Ra,120); Wait(125); Wait(50); } } task main() { SetSensor(SENSOR_1, SENSOR_TOUCH); //センサ−1:タッチセンサー start play_music ; //音楽を演奏 OnFwd(OUT_A+OUT_B); //直進 until (SENSOR_1==1); //タッチセンサーが反応したとき stop play_music ; //音楽の演奏を停止 Off(OUT_A+OUT_B); //停止 }
『プログラム』
作成者:
#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 Mi 330 #define Fa 349 #define So 392 #define Ra 440 #define Si 494 #define Do 523 #define Re 587 #define mi 659 task play_music() { while (true) { PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,120); Wait(150); PlayTone(Do,30); Wait(35); PlayTone(Re,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,120); Wait(150); PlayTone(Si,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Ra,120); Wait(150); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,90); Wait(120); PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,120); Wait(150); PlayTone(Do,30); Wait(35); PlayTone(Re,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,120); Wait(150); PlayTone(Si,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Ra,120); Wait(150); PlayTone(Mi,30); Wait(35); PlayTone(Fa,30); Wait(35); PlayTone(Mi,30); Wait(35); PlayTone(Mi,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(mi,60); Wait(70); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Fa,60); Wait(70); PlayTone(Ra,60); Wait(65); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,60); Wait(70); PlayTone(Fa,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(mi,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Fa,60); Wait(70); PlayTone(Ra,60); Wait(65); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Ra,90); Wait(95); PlayTone(Ra,90); Wait(95); PlayTone(So,60); Wait(65); PlayTone(Ra,120); Wait(125); Wait(50); } } task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2:光センサー while(true) { start play_music; //音楽を演奏 while(SENSOR_2<60) //明るさが60より小さいとき { go_straight; //直進 } while(SENSOR_2>60) //明るさが60より大きいとき { stop play_music; //音楽の演奏を停止 turn_left; //左旋回 } } }
『プログラム』
作成者:カツヤ・ウメ
#define THRESHOLD 100 #define Mi 330 #define Fa 349 #define So 392 #define Ra 440 #define Si 494 #define Do 523 #define Re 587 #define mi 659 #define turn_left OnFwd(OUT_C);OnRev(OUT_A); #define go_straight OnFwd(OUT_A+OUT_C); task play_music() { while (true) { PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,120); Wait(150); PlayTone(Do,30); Wait(35); PlayTone(Re,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,120); Wait(150); PlayTone(Si,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Ra,120); Wait(150); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,90); Wait(120); PlayTone(Ra,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Do,120); Wait(150); PlayTone(Do,30); Wait(35); PlayTone(Re,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,120); Wait(150); PlayTone(Si,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Si,30); Wait(35); PlayTone(Ra,120); Wait(150); PlayTone(Mi,30); Wait(35); PlayTone(Fa,30); Wait(35); PlayTone(Mi,30); Wait(35); PlayTone(Mi,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(mi,60); Wait(70); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Fa,60); Wait(70); PlayTone(Ra,60); Wait(65); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,60); Wait(70); PlayTone(Fa,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(mi,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Do,30); Wait(35); PlayTone(Ra,30); Wait(35); PlayTone(Fa,60); Wait(70); PlayTone(Ra,60); Wait(65); PlayTone(Si,60); Wait(65); PlayTone(Do,30); Wait(35); PlayTone(Ra,90); Wait(120); PlayTone(Ra,90); Wait(95); PlayTone(Ra,90); Wait(95); PlayTone(So,60); Wait(65); PlayTone(Ra,120); Wait(125); Wait(50); } } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1:光センサー while(true) { start play_music; //音楽を演奏 while(SENSOR_1<60) //明るさが60以下のとき { go_straight; //直進 } while(SENSOR_1>60) //明るさが60より大きいとき { if(SENSOR_1==THRESHOLD) //明るさが100のとき { Off(OUT_A+OUT_C); //停止 } else{stop play_music; //明るさが60より大きく100より小さいとき turn_left; //左旋回 } } } }
アドバイスお願いします!