#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


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