2006a/A4

演奏をしながら光を追うロボット

写真を撮られる前に解体される運命に… 基本的にはセンサが2個飛び出ている感じでした。

製作者:土佐犬. NRLP. けいすけ.うーじ.
愛称:名前はまだ無い

制作過程

こんな感じです

  1. ロボの完成図を想像する。
  2. 先輩方のプログラムを参考に、実現度合いを考える。
  3. とりあえず本体をプログラムが動く程度に組み立てる。
  4. 音楽とロボの動きを担当別に作る。
  5. テストを繰り返し、完成!

迷ったらモルダウ.ver

光を失ったら回りながらもるだうします

製作者:うーじ. けいすけ. NRLP.
製作日時:7月6日
#define pika 36     //反応するライトの強さ
#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 Cis 554  //ド♯
#define D  587  //レ
#define Dis 622  //レ♯
#define E  659  //ミ
#define F  698  //ファ
#define Fis 740  //ファ♯
#define G 784  //ソ
#define Gis 831  //ソ♯
#define A 880  //ラ
#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(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(Ais,38); Wait(40);
  PlayTone(C8th,18); Wait(20);
  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

直進の時、ロシアンミュージックが流れます

製作者:土佐犬. けいすけ. NRLP. 
製作日時:7月6日
#define pika 36
#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 Cis 554
#define D  587
#define Dis 622
#define E  659
#define F  698 
#define Fis 740
#define G 784
#define Gis 831
#define A 880 
#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(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(Ais,38); Wait(40);
 PlayTone(C8th,18); Wait(20);
 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;     //コロブチカを演奏し
	         zen;     //前進
                 until(SENSOR_1<pika||SENSOR_3<pika);     //どちらかのセンサが光を見失うまでは。
                 }
	       }
       }
}

反省

色々と

失敗した点

工夫した点

次への課題

感想

演奏がうまくいった時の感動が大きいと思った。
文字だらけ→ロボの行動 となる変化が分かりやすく、興味がより沸いた。
演奏テストをする際、音が大きすぎて恥ずかしかった。

コメントをお願いします



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