[[2006a/A4]]~
班員、土佐犬. NRLP. ハル.うーじ.
#contents
*演奏をしながら光を追うロボット [#k418e5c1]
写真を撮られる前に解体される運命に…
基本的にはセンサが2個飛び出ている感じでした。
 製作者:土佐犬. NRLP. けいすけ.うーじ.
 愛称:名前はまだ無い
写真を撮りましょう。
*制作過程 [#fde0dfb4]
**制作過程 [#fde0dfb4]
こんな感じです
+ロボの完成図を想像する。
+先輩方のプログラムを参考に、実現度合いを考える。
+とりあえず本体をプログラムが動く程度に組み立てる。
+音楽とロボの動きを担当別に作る。
+テストを繰り返し、完成!
**迷ったらモルダウ.ver [#p88dffb4]
光を失ったら回りながらもるだうします
 製作者:うーじ. ハル. NRLP.
 製作者:うーじ. けいすけ. NRLP.
 製作日時:7月6日

 #define pika 36     //反応するライトの強さ
 #define zen OnFwd(OUT_A+OUT_B);     //前進
 #define zen OnFwd(OUT_A+OUT_C);     //前進
 #define hidari OnFwd(OUT_C);OnRev(OUT_A);     //左回り
 #define migi OnFwd(OUT_A);OnRev(OUT_C);     //右回り
 //↓音階を定義
 #define C  523  //ド
 #define Ces 554  //ド♯
 #define Cis 554  //ド♯
 #define D  587  //レ
 #define Des 622  //レ♯
 #define Dis 622  //レ♯
 #define E  659  //ミ
 #define F  698  //ファ
 #define Fes 740  //ファ♯
 #define Fis 740  //ファ♯
 #define G 784  //ソ
 #define Ges 831  //ソ♯
 #define Gis 831  //ソ♯
 #define A 880  //ラ
 #define Aes 932  //ラ♯
 #define Ais 932  //ラ♯
 #define H 988  //シ
 #define C8th  1047  //1オクターヴ上、ド
 #define C8thes 1109  //1オクターヴ上、ド♯
 
 task morudau()     //モルダウの楽譜
 {
 while(true)
   {
   PlayTone(C,20); Wait(20);
   PlayTone(F,35); Wait(40);
   PlayTone(G,20); Wait(20);
   PlayTone(Ges,35); Wait(40);
   PlayTone(Aes,18); Wait(20);
   PlayTone(Gis,35); Wait(40);
   PlayTone(Ais,18); Wait(20);
   PlayTone(C8th,35); Wait(40);
   PlayTone(C8th,16); Wait(20);
   PlayTone(C8th,55); Wait(60);
   PlayTone(C8thes,55); Wait(60);
   PlayTone(C8thes,55); Wait(60);
   PlayTone(C8th,90); Wait(100);
  
   PlayTone(C8th,18); Wait(20);
   PlayTone(Aes,38); Wait(40);
   PlayTone(Ais,38); Wait(40);
   PlayTone(C8th,18); Wait(20);
   PlayTone(Aes,38); Wait(40); 
   PlayTone(Aes,18); Wait(20); 
   PlayTone(Ges,38); Wait(40);
   PlayTone(Aes,18); Wait(20);
   PlayTone(Ges,58); Wait(60);
   PlayTone(Ais,38); Wait(40); 
   PlayTone(Ais,18); Wait(20); 
   PlayTone(Gis,38); Wait(40);
   PlayTone(Ais,18); Wait(20);
   PlayTone(Gis,58); Wait(60);
 
   PlayTone(G,58); Wait(60);
   PlayTone(G,58); Wait(60);
   PlayTone(F,118); Wait(120);
 
   Wait(200);
   }
 }
 
 task main()     //仕事始め
 {
	SetSensor(SENSOR_1,SENSOR_LIGHT);   //センサ1を左ライトセンサとする
	SetSensor(SENSOR_3,SENSOR_LIGHT);     //センサ3を右ライトセンサとする
	while(true)
	  {
	     if(SENSOR_1<pika&&SENSOR_3>pika)     //もし右センサのみ反応したら
	       {
	       stop morudau;     //モルダウは演奏せず
             migi;     //右へ回る
	       Wait(11);
             }
	     if(SENSOR_1>pika&&SENSOR_3<pika)     //もし左センサのみ反応したら
	       {
	       stop morudau;     //モルダウの演奏はせず
             hidari;     //左へ回る
	       Wait(11);
	       }
	     if(SENSOR_1<pika&&SENSOR_3<pika)     //もしセンサ2個とも光を失ったら
	       {    
           while(SENSOR_1<pika||SENSOR_3<pika)     //どちらかのセンサが光を失っている間
                {
                start morudau;     //モルダウを演奏し
                migi;     //右へ回る
	          Wait(11);
	          until(SENSOR_1>pika||SENSOR_3>pika);     //どちらかのセンサが光を得るまで
	          }
             }
	     if(SENSOR_1>pika&&SENSOR_3>pika)     //もし両方のセンサに光が当たっているならば
	       {
	       stop morudau;     //モルダウは演奏せず
	       zen;     //前進
	       }
        }
 }
**走る際にはコロブチカ.ver [#u04451ef]
直進の時、ロシアンミュージックが流れます
 製作者:土佐犬. ハル. NRLP. 
 製作者:土佐犬. けいすけ. NRLP. 
 製作日時:7月6日

 #define pika 36
 #define zen OnFwd(OUT_A+OUT_B);
 #define zen OnFwd(OUT_A+OUT_C);
 #define hidari OnFwd(OUT_C);OnRev(OUT_A);
 #define migi OnFwd(OUT_A);OnRev(OUT_C);
 
 #define C  523
 #define Ces 554
 #define Cis 554
 #define D  587
 #define Des 622
 #define Dis 622
 #define E  659
 #define F  698 
 #define Fes 740
 #define Fis 740
 #define G 784
 #define Ges 831
 #define Gis 831
 #define A 880 
 #define Aes 932
 #define Ais 932
 #define H 988
 #define C8th  1047
 #define C8thes 1109
 
 task morudau()
 {
 while(true)
  {
  PlayTone(C,20); Wait(20);
  PlayTone(F,35); Wait(40);
  PlayTone(G,20); Wait(20);
  PlayTone(Ges,35); Wait(40);
  PlayTone(Aes,18); Wait(20);
  PlayTone(Gis,35); Wait(40);
  PlayTone(Ais,18); Wait(20);
  PlayTone(C8th,35); Wait(40);
  PlayTone(C8th,16); Wait(20);
  PlayTone(C8th,55); Wait(60);
  PlayTone(C8thes,55); Wait(60);
  PlayTone(C8thes,55); Wait(60);
  PlayTone(C8th,90); Wait(100);
 
  PlayTone(C8th,18); Wait(20);
  PlayTone(Aes,38); Wait(40);
  PlayTone(Ais,38); Wait(40);
  PlayTone(C8th,18); Wait(20);
  PlayTone(Aes,38); Wait(40); 
  PlayTone(Aes,18); Wait(20); 
  PlayTone(Ges,38); Wait(40);
  PlayTone(Aes,18); Wait(20);
  PlayTone(Ges,58); Wait(60);
  PlayTone(Ais,38); Wait(40); 
  PlayTone(Ais,18); Wait(20); 
  PlayTone(Gis,38); Wait(40);
  PlayTone(Ais,18); Wait(20);
  PlayTone(Gis,58); Wait(60);
 
  PlayTone(G,58); Wait(60);
  PlayTone(G,58); Wait(60);
  PlayTone(F,118); Wait(120);
 
  Wait(200);
  }
 }
 ここまでは迷ったらモルダウ.verと同じ
 task  korobu()     //コロブチカの楽譜
 {
  while(true)
  {
  PlayTone(A,35); Wait(40);
  PlayTone(E,15); Wait(20);
  PlayTone(F,15); Wait(20);
  PlayTone(G,35); Wait(40);
  PlayTone(A,2); Wait(2);
  PlayTone(G,3); Wait(3);
  PlayTone(F,12); Wait(15);
  PlayTone(E,15); Wait(20);
  PlayTone(D,35); Wait(40);
  PlayTone(D,15); Wait(20);
  PlayTone(F,15); Wait(20);
  PlayTone(A,35); Wait(40);
  PlayTone(H,2); Wait(2);
  PlayTone(A,3); Wait(3);
  PlayTone(G,12); Wait(15);
  PlayTone(F,15); Wait(20);
  PlayTone(E,35); Wait(40);
  PlayTone(E,15); Wait(20);
  PlayTone(F,15); Wait(20);
  PlayTone(G,35); Wait(40);
  PlayTone(A,35); Wait(35);
  PlayTone(F,35); Wait(40);
  PlayTone(D,35); Wait(40);
  PlayTone(D,75); Wait(80);
  Wait(80);
  }
 }
 
 task main()     //仕事始め
 {
	SetSensor(SENSOR_1,SENSOR_LIGHT);     ライトセンサを左右ともセット
	SetSensor(SENSOR_3,SENSOR_LIGHT);
	while(true)
	  {
	     if(SENSOR_1<pika&&SENSOR_3>pika)    //右センンサ反応で
	       {
             migi;     //右へ回る
	       Wait(11);
             }
	     if(SENSOR_1>pika&&SENSOR_3<pika)     //左センサ反応で
	       {
             hidari;     //左へ回る
	       Wait(11);
	       }
	     if(SENSOR_1<pika&&SENSOR_3<pika)     //もしセンサが両方とも光を見失ってしまったら
	       {    
           while(SENSOR_1<pika||SENSOR_3<pika)     //センサのどちらかが光を見失っている限り
                {
                start morudau;     //モルダウを演奏
                stop korobu;     //コロブチカの演奏を停止
                migi;     //右へ回る
	          Wait(11);
	          until(SENSOR_1>pika||SENSOR_3>pika);     //どちらかのセンサが光を見つけるまで。
	          }
             }
	     if(SENSOR_1>pika&&SENSOR_3>pika)     //センサが両方とも光を感知している場合
	       {
	        while(SENSOR_1>pika||SENSOR_3>pika)     //センサのどちらかが光を感知している限り
                  {
                  stop morudau;     //モルダウの演奏をやめ
	         start korobu;     //コロブスカを演奏し
	         start korobu;     //コロブチカを演奏し
	         zen;     //前進
                  until(SENSOR_1<pika||SENSOR_3<pika)     //どちらかのセンサが光を見失うまでは。
                  until(SENSOR_1<pika||SENSOR_3<pika);     //どちらかのセンサが光を見失うまでは。
                  }
	       }
        }
 }
*反省 [#p45111ff]
色々と
**失敗した点 [#m78c3ec6]
-車体見た目にこだわれていない。
-光に過敏に反応し過ぎて動きがカクカクである。
-プログラムが長くなってしまった。
-2つめのプログラムで演奏がなぜかうまくいかない。
-プログラムが非常に長くなってしまった。
-2つめのプログラムでカーブがなぜかうまくいかない。なぜか…
-急な光の動きにはついていけない。
-ドレミしか読めない人がいる。
-ドレミしか読めない人がいる。だからABCを読むのに苦労した。
**工夫した点 [#cd18b369]
-シンプルイズザベスト。
-左右のセンサで光を左右に追いかけることができる。
-構造が簡単なので微調整が簡単。
-曲は載せていない分もいろいろ作った。
-短いコードでコンパクトに収まるようにセンサやモータの位置をコンパクトにした。
**次への課題 [#qff78c2a]
-プログラムをもっとすっきり、マクロなどを使ってより簡略化させる。
-見た目を派手に改造する。
-より安全に、より慎重に行動できるようにモータの力を調節する。
-音階はドレミ表示が分かりやすい。
-なぜか動かないという現象を回避するため、難しい命令は避ける。
*感想 [#r693c263]
演奏がうまくいった時の感動が大きいと思った。~
文字だらけ→ロボの行動 となる変化が分かりやすく、興味がより沸いた。~
演奏テストをする際、音が大きすぎて恥ずかしかった。
*コメントをお願いします [#i1c7e9f6]
#comment


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