- 追加された行はこの色です。
- 削除された行はこの色です。
#hr
CENTER:&size(25){課題3:光を追うロボットを作る};
#hr
○目次○
#contents
***制作者 [#v533c5b6]
子供の頃から神童
二等兵
ツノハラ
**課題の内容 [#c850f360]
懐中電灯の光を追いかけるロボットを作り、次の中から2種類以上のプログラムを作る。
+&color(red){光源};を見失った時に&color(blue){音楽};を演奏しながら旋回して&color(red){光源};を探す
+&color(red){光源};を見失った時には明るさに比例した&color(blue){周波数の音};を出しながら旋回して&color(red){光源};を探す
+&color(red){光源};を見失っていないときには&color(blue){音楽};を演奏し、見失った時には&color(green){別の曲};を演奏しながら&color(red){光源};を探す
+&color(red){光源};を見失っていないときには&color(blue){ある曲};を演奏し、見失った時には&color(green){別の曲};を演奏しながら&color(red){光源};を探す
+上記のいずれかに『&color(red){光源};に近づき過ぎると停止する』という機能を追加する
*マシンの図 [#cb23da2d]
&ref(光を追う写真.JPG);
*マシンの製作の上で [#u836d849]
今回の課題はロボットの機構はあまり重要でないので作成に苦労はしなかった、しかし上り下りをスムーズのするため小さなタイヤを前後中心あたりにつけたり、写真をみてわかるように風車がついているなどこだわりは随所にある。
*マシンが動いている時にかかっている音楽 [#gb975bb3]
**マシンが動いている時にかかっている音楽01 [#gb975bb3]
○制作者○ツノハラ◎協力者◎ブライト
#define mi 659 //ミ
#define fa 698 //ファ
#define so 784 //ソ
#define sol 831//ソの#
#define ra 880 //ラ
#define shi 988//シ
#define Do 1047//ド
#define re 1175//レ
#define mil 1319//1オクターブ高いミ
#define fal 1397//1オクターブ高いファ
#define soy 15681//オクターブ高いソ
#define ral 1760 //1オクターブ高いラ
task play_music()
task play_music()
{
while(true)
{
PlayTone(mi,40); Wait(40);
PlayTone(ra,40); Wait(40);
PlayTone(sol,40);Wait(40);
PlayTone(ra,40);Wait(40);
PlayTone(shi,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(shi,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(re,40);Wait(40);
PlayTone(mil,240);Wait(240);
PlayTone(soy,80);Wait(80);
PlayTone(mil,240);Wait(240);
PlayTone(ral,40);Wait(40);
PlayTone(soy,40);Wait(40);
PlayTone(mil,160);Wait(200);
PlayTone(mil,40);Wait(40);
PlayTone(re,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(re,20);Wait(20);
PlayTone(Do,20);Wait(20);
PlayTone(ra,200);Wait(200);
PlayTone(Do,80);Wait(80);
PlayTone(ra,400);Wait(500);
}
}
これでわかる人はかなりすごい!
答えは→&color(blue,blue){コンドルは飛んでいく};
**マシンが動いている時にかかっている音楽02 [#zf43e6db]
●制作者●子供の頃から神童
#define TURN_TIME 600
#define mi 659
#define fa 698
#define fal 740
#define so 784
#define sol 831
#define ra 880
#define ral 932
#define shi 988
#define Do 1047
#define Dol 1109
#define re 1175
#define rel 1245
task play_music()
{
while(true)
{
PlayTone(so,80); Wait(82);
PlayTone(fal,20);Wait(20);
PlayTone(so,20);Wait(20);
PlayTone(ra,40);Wait(42);
PlayTone(mi,80);Wait(82);
PlayTone(re/2,80);Wait(82);
PlayTone(Do/2,80);Wait(62);
PlayTone(shi/2,20);Wait(22);
PlayTone(Do/2,20);Wait(22);
PlayTone(re/2,40);Wait(42);
PlayTone(ra/2,160);Wait(162);
PlayTone(shi/2,80);Wait(82);
PlayTone(Dol/2,20);Wait(22);
PlayTone(re/2,40);Wait(42);
PlayTone(mi,20);Wait(22);
PlayTone(ra,80);Wait(82);
PlayTone(re/2,80);Wait(82);
PlayTone(so,80);Wait(82);
PlayTone(so,20);Wait(22);
PlayTone(fal,40);Wait(42);
PlayTone(mi,20);Wait(22);
PlayTone(re/2,160);Wait(162);
}
}
これでわかる人は天才!
答えは→&color(green,green){威風堂々};
*プログラム(&color(red){光源};を見失った時に&color(blue){音楽};を演奏しながら旋回して&color(red){光源};を探す) [#b6f03dbb]
★制作者★子供の頃から神童
#define mi 659
#define fa 698
#define so 784
#define sol 831
#define ra 880
#define shi 988
#define Do 1047
#define re 1175
#define mil 1319
#define fal 1397
#define soy 1568
#define ral 1760
task play_music()
{
while(true)
{
PlayTone(mi,40); Wait(40);
PlayTone(ra,40); Wait(40);
PlayTone(sol,40);Wait(40);
PlayTone(ra,40);Wait(40);
PlayTone(shi,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(shi,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(re,40);Wait(40);
PlayTone(mil,240);Wait(240);
PlayTone(soy,80);Wait(80);
PlayTone(mil,240);Wait(240);
PlayTone(ral,40);Wait(40);
PlayTone(soy,40);Wait(40);
PlayTone(mil,160);Wait(200);
PlayTone(mil,40);Wait(40);
PlayTone(re,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(re,20);Wait(20);
PlayTone(Do,20);Wait(20);
PlayTone(ra,200);Wait(200);
PlayTone(Do,80);Wait(80);
PlayTone(ra,400);Wait(500);
}
}
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
OnFwd(OUT_A+OUT_C+OUT_B);
while(true)
{
SetPower(OUT_A,2);
SetPower(OUT_C,2);
if(SENSOR_1>SENSOR_3-20&&SENSOR_1>50|| SENSOR_1-20> SENSOR_3 &&SENSOR_3>50 )
{
SetPower(OUT_A,4);
SetPower(OUT_C,6);
OnFwd(OUT_A+OUT_C);
Wait(100);
}
if(SENSOR_1<SENSOR_3&&SENSOR_1<50)
{
OnFwd(OUT_A);
OnRev(OUT_C);
}
if(SENSOR_1>SENSOR_3 &&SENSOR_3<50)
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
else
{
start play_music ;
SetPower(OUT_A,7);
SetPower(OUT_C,7);
OnFwd(OUT_A);
OnRev(OUT_C);
}
}
}
*プログラム(&color(red){光源};を見失っていないときには&color(blue){ある曲};を演奏し、見失った時には&color(green){別の曲};を演奏しながら&color(red){光源};を探す) [#i70690fd]
☆制作者☆ツノハラ
#define TURN_TIME 600
#define mi 659
#define fa 698
#define fal 740
#define so 784
#define sol 831
#define ra 880
#define shi 988
#define Do 1047
#define Dol 1109
#define re 1175
#define rel 1245
task play_music01()
{
while(true)
{
PlayTone(mi,40); Wait(40);
PlayTone(ra,40); Wait(40);
PlayTone(sol,40);Wait(40);
PlayTone(ra,40);Wait(40);
PlayTone(shi,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(shi,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(re,40);Wait(40);
PlayTone(mi*2,240);Wait(240);
PlayTone(so*2,80);Wait(80);
PlayTone(mi*2,240);Wait(240);
PlayTone(ra*2,40);Wait(40);
PlayTone(so*2,40);Wait(40);
PlayTone(mi*2,160);Wait(200);
PlayTone(mi*2,40);Wait(40);
PlayTone(re,40);Wait(40);
PlayTone(Do,40);Wait(40);
PlayTone(re,20);Wait(20);
PlayTone(Do,20);Wait(20);
PlayTone(ra,200);Wait(200);
PlayTone(Do,80);Wait(80);
PlayTone(ra,400);Wait(500);
}
}
task play_music02()
{
while(true)
{
PlayTone(so,80); Wait(82);
PlayTone(fal,20);Wait(20);
PlayTone(so,20);Wait(20);
PlayTone(ra,40);Wait(42);
PlayTone(mi,80);Wait(82);
PlayTone(re/2,80);Wait(82);
PlayTone(Do/2,80);Wait(62);
PlayTone(shi/2,20);Wait(22);
PlayTone(Do/2,20);Wait(22);
PlayTone(re/2,40);Wait(42);
PlayTone(ra/2,160);Wait(162);
PlayTone(shi/2,80);Wait(82);
PlayTone(Dol/2,20);Wait(22);
PlayTone(re/2,40);Wait(42);
PlayTone(mi,20);Wait(22);
PlayTone(ra,80);Wait(82);
PlayTone(re/2,80);Wait(82);
PlayTone(so,80);Wait(82);
PlayTone(so,20);Wait(22);
PlayTone(fal,40);Wait(42);
PlayTone(mi,20);Wait(22);
PlayTone(re/2,160);Wait(162);
}
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int light_max=0,time_max=0;
ClearTimer(0);
while(FastTimer(0)<15){
OnFwd(OUT_A);OnRev(OUT_C);
Wait(TURN_TIME);
if((SENSOR_1>light_max+50)||(SENSOR_3>light_max+50)){
light_max=SENSOR_1;
time_max=FastTimer(0);
}
}
while(FastTimer(0)>15)
{
start play_music01 ;
Off(OUT_A+OUT_C);
Wait(100);
OnFwd(OUT_A);OnRev(OUT_C);
Wait(time_max);
OnFwd(OUT_A+OUT_C);Wait(100);
ClearTimer(0);
SetPower(OUT_A,5);
SetPower(OUT_C,5);
}
while(OUT_A<6)
{
if((SENSOR_1>=60)||(SENSOR_3>=60))
{
start play_music01 ;
OnFwd(OUT_A+OUT_C);
}
if((SENSOR_1<50)&&(SENSOR_3>60))
{
OnFwd(OUT_A);
OnRev(OUT_C);
}
if((SENSOR_3<50)&&(SENSOR_1>60))
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
if((SENSOR_1<50)&&(SENSOR_3<50))
{
stop play_music01 ;
start play_music02 ;
OnFwd(OUT_A);
OnRev(OUT_C);
}
}
}
*反省 [#eeaffd0c]
今回の光を追う課題は、課題の1番最後なだけあって、すごく大変だった。プログラムがかなり複雑になり、しかもロボットを動かしてみても思うように動いてくれず、何回も直した。まず始めには
*コメントお願いします&wink; [#e5f84d1c]
#comment