目次

光を追いかけるロボット

KC320003.jpg

工夫した点

 ●今回、初めてマクロを最初から使用
 ●できる限りプログラムの軽量化に取り組んだ

苦労した点

 ●曲が作れないメンバーだらけだった
 ●繰り返しプログラムの条件が衝突してしまった
 ●画像がしょぼくなった

プログラム(試作1号)

製作 ソウマ

#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);
}
}  
}

光源を見失った時にぐるっと旋回して光源を探すプログラム

#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; }
}
}

光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探すプログラム

#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>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 ;}
}
} 

光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探し光源に近づき過ぎると停止するプログラム

#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 ;}
}
} 

コメント



添付ファイル: fileKC320003.jpg 290件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-14 (金) 14:50:52