目次
#contents

*光を追いかけるロボット [#yd54c69c]

#ref(2006a/B3/課題3左/KC320003.jpg,50%)
*工夫した点 [#t6859809]


 ●今回、初めてマクロを最初から使用&br;
 ●できる限りプログラムの軽量化に取り組んだ
*苦労した点 [#ja4b085c]
 ●曲が作れないメンバーだらけだった&br;
 ●繰り返しプログラムの条件が衝突してしまった&br;
 ●画像がしょぼくなった
*プログラム(試作1号) [#h41564b4]
製作 ソウマ
 #define stop_turning Off(OUT_A+OUT_C);
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C);
 #define turn_left OnFwd(OUT_C);OnRev(OUT_A);
 #define TURN_TIME 400
 #define free_TIME 1000
 #define go_turning OnFwd(OUT_A+OUT_C);
 task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 int light_max=0,time_max=0;
 turn_right;
 ClearTimer(0);
 ClearTimer(1);
 while(FastTimer(0)<TURN_TIME){
 if(SENSOR_1>light_max){
 light_max=SENSOR_1;
 time_max=FastTimer(0);
 }
 }
 stop_turning;
 Wait(60);
 turn_left;
 Wait(TURN_TIME-time_max);
 stop_turning; 
 while(FastTimer(1)> free_TIME){
 if(SENSOR_1< SENSOR_3){
 turn_right;
 Wait(20); 
 }
 else{
 turn_left;
 Wait(20);
 }
 }  
 }

*プログラム2 [#gc24937d]
*光源を見失った時にぐるっと旋回して光源を探すプログラム [#gc24937d]
 #define stop_turning Off(OUT_A+OUT_C);
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C);
 #define turn_left OnFwd(OUT_C);OnRev(OUT_A);
 #define TURN_TIME 400
 #define free_TIME 1000
 #define go_go OnFwd(OUT_A+OUT_C);
 task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 while(1+1==2){
 if(SENSOR_1>70){go_go;}
 else
 {
 int light_max=0,time_max=0;
 turn_right;
 ClearTimer(0);
 ClearTimer(1);
 while(FastTimer(0)<TURN_TIME){
 if(SENSOR_1>light_max){
 light_max=SENSOR_1;
 time_max=FastTimer(0);
 }
 }
 stop_turning;
 Wait(60);
 turn_left;
 Wait(TURN_TIME-time_max);
 stop_turning; }
 }
 }
*暫定メリーさんバージョン [#r7488642]
*光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探すプログラム [#r7488642]
 #define stop_turning Off(OUT_A+OUT_C);
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C);
 #define turn_left OnFwd(OUT_C);OnRev(OUT_A);
 #define TURN_TIME 400
 #define free_TIME 1000
 #define go_go OnFwd(OUT_A+OUT_C); 
 #define Do  523
 #define Re  587
 #define Mi  659
 #define Fa  698
 #define Sol 784 
 task play_music()   // 音楽を演奏するタスク
 task play_music()   
 {
 while (true)
 {
 PlayTone(Mi,25); Wait(30);  // Wait の時間の方を少し長くし  て
 PlayTone(Re, 5); Wait(10);  // 同じ音を続けて鳴らす場合に も
 PlayTone(Do,15); Wait(20);  // 一つの音にならないようにしている
 PlayTone(Mi,25); Wait(30); 
 PlayTone(Re, 5); Wait(10);  
 PlayTone(Do,15); Wait(20);  
 PlayTone(Re,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,35); Wait(40);
 PlayTone(Re,15); Wait(20);
 PlayTone(Re,15); Wait(20);
 PlayTone(Re,35); Wait(40);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Sol,15); Wait(20);
 PlayTone(Sol,35); Wait(40);
 PlayTone(Mi,25); Wait(30);
 PlayTone(Re, 5); Wait(10);
 PlayTone(Do,15); Wait(20);
 PlayTone(Re,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,35); Wait(40);
 PlayTone(Re,15); Wait(20);
 PlayTone(Re,15); Wait(20);
 PlayTone(Mi,25); Wait(30);
 PlayTone(Re, 5); Wait(10);
 PlayTone(Do,55); Wait(60);
 Wait(20);
 }
 }
 task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 while(1+1==2){
 if(SENSOR_1>50){go_go;}
 else
 {
 int light_max=0,time_max=0;
 turn_right;
 ClearTimer(0);
 ClearTimer(1);
 while(FastTimer(0)<TURN_TIME){
 start play_music ;
 if(SENSOR_1>light_max){
 light_max=SENSOR_1;
 time_max=FastTimer(0);
 }
 }
 stop_turning;
 Wait(60);
 turn_left;
 Wait(TURN_TIME-time_max);
 stop_turning; 
 stop play_music ;}
 }
 } 

*光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探し光源に近づき過ぎると停止するプログラム [#r5fe6d12]
 #define stop_turning Off(OUT_A+OUT_C);
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C);
 #define turn_left OnFwd(OUT_C);OnRev(OUT_A);
 #define TURN_TIME 400
 #define free_TIME 1000
 #define go_go OnFwd(OUT_A+OUT_C); 
 #define Do  523
 #define Re  587
 #define Mi  659
 #define Fa  698
 #define Sol 784 
 task play_music()   
 {
 while (true)
 {
 PlayTone(Mi,25); Wait(30); 
 PlayTone(Re, 5); Wait(10);  
 PlayTone(Do,15); Wait(20);  
 PlayTone(Re,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,35); Wait(40);
 PlayTone(Re,15); Wait(20);
 PlayTone(Re,15); Wait(20);
 PlayTone(Re,35); Wait(40);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Sol,15); Wait(20);
 PlayTone(Sol,35); Wait(40);
 PlayTone(Mi,25); Wait(30);
 PlayTone(Re, 5); Wait(10);
 PlayTone(Do,15); Wait(20);
 PlayTone(Re,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,15); Wait(20);
 PlayTone(Mi,35); Wait(40);
 PlayTone(Re,15); Wait(20);
 PlayTone(Re,15); Wait(20);
 PlayTone(Mi,25); Wait(30);
 PlayTone(Re, 5); Wait(10);
 PlayTone(Do,55); Wait(60);
 Wait(20);
 }
 }
 task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_3,SENSOR_LIGHT);
 while(1+1==2)
 if(SENSOR_1>80){stop_turning;}
 else{
 if(SENSOR_1>50){go_go;}
 else
 {
 int light_max=0,time_max=0;
 turn_right;
 ClearTimer(0);
 ClearTimer(1);
 while(FastTimer(0)<TURN_TIME){
 start play_music ;
 if(SENSOR_1>light_max){
 light_max=SENSOR_1;
 time_max=FastTimer(0);
 }
 }
 stop_turning;
 Wait(60);
 turn_left;
 Wait(TURN_TIME-time_max);
 stop_turning; 
 stop play_music ;}
 }
 } 
*コメント [#h8efc1fa]
-苦労した点・工夫した点をもうすこし具体的に書いてください。 -- [[ゆき(TA)]] &new{2006-07-14 (金) 14:50:52};


#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS