- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006a/A5/課題3左]]
もくじ
#contents
*課題3 光を追いかけるロボット [#qfbdc580]
**制作者 ヤマヒロ トラ 和知 サット [#v314ce0e]
**ロボットの外観 [#jcc23f5e]
ロボット名;ロボコンキラー
特徴;無意味についた左右のはさみ
&ref(060705_1955~01.jpg);
**経緯 [#t3cbad0c]
今回のロボットの製作に関して、まず何の音楽
にするかという
点で少しもめました。単純な曲にするか、複雑な曲にするか
で意見が分かれました。しかし最終的にはみんなが親しみを持てる音楽にする
という方向できまり、[カエルの歌][チャルメラ][]に決まりました。どれもみんなが
という方向できまり、[カエルの歌][チャルメラ]に決まりました。どちらもみんなが
子供の頃に聞いたであろう懐かしい曲です。しかし!曲がなって欲しい時に鳴ってく
れないという事態も発生し、そのせいで僕たちはかなり苦しめられました。
しかし!メンバーでそのことについて討論した結果簡単に打開法が見つかり
なんとか無事に今日を迎えることができました!
[#we283569]
れないという事態も発生し、そのせいで僕たちはかなり苦しめられました。それで、今度は曲が上手に鳴ると今度は光を追いかけないという問題が発生してまたプログラムの改良の繰り返し、ようやくちゃんと光を追いかけかつ曲が鳴るべき時に鳴るちゃんとしたプログラムが完成した。
そして、なんとか無事に今日を迎えることができました!
**プログラム [#jcfa8df6]
1.光源を見失ったときはには曲を演奏しながら旋回して光源を探す。
(作成者;トラ、ヤマヒロ)
#define DO 523
#define RE 587
#define MI 659
#define FA 698
#define SOL 784
#define LA 880
task play_music(){while (true){
PlayTone(DO,25); Wait(30);
PlayTone(RE, 25); Wait(30);
PlayTone(MI,25); Wait(30);
PlayTone(FA,25); Wait(30);
PlayTone(MI,25); Wait(30);
PlayTone(RE,25); Wait(30);
PlayTone(DO,35); Wait(50);
PlayTone(MI,25); Wait(30);
PlayTone(FA,25); Wait(30);
PlayTone(SOL,25); Wait(30);
PlayTone(LA,25); Wait(30);
PlayTone(SOL,25); Wait(30);
PlayTone(FA,25); Wait(30);
PlayTone(MI,30); Wait(50);
PlayTone(DO,50); Wait(55);
PlayTone(DO,50); Wait(55);
PlayTone(DO,50); Wait(55);
PlayTone(DO,50); Wait(70);
PlayTone(DO,25); Wait(30);
PlayTone(DO,25); Wait(30);
PlayTone(RE,25); Wait(30);
PlayTone(RE,25); Wait(30);
PlayTone(MI,25); Wait(30);
PlayTone(MI,25); Wait(30);
PlayTone(FA,25); Wait(30);
PlayTone(FA,25); Wait(30);
PlayTone(MI,50); Wait(55);
PlayTone(RE,50); Wait(55);
PlayTone(DO,50); Wait(55);
}}
1.光源を見失ったときはには曲を演奏しながら旋回して光源を探す。(作成者;トラ、ヤマヒロ)
#define DO 523 // 音階の周波数の定義
#define RE 587
#define MI 659
#define FA 698
#define SOL 784
#define LA 880
task play_music(){while (true){ // かえる歌開始
PlayTone(DO,25); Wait(30); // ド
PlayTone(RE, 25); Wait(30); // レ
PlayTone(MI,25); Wait(30); // ミ
PlayTone(FA,25); Wait(30); // ファ
PlayTone(MI,25); Wait(30); // ミ
PlayTone(RE,25); Wait(30); // レ
PlayTone(DO,35); Wait(50); // ドー+休符
PlayTone(MI,25); Wait(30); // ミ
PlayTone(FA,25); Wait(30); // ファ
PlayTone(SOL,25); Wait(30); // ソ
PlayTone(LA,25); Wait(30); // ラ
PlayTone(SOL,25); Wait(30); // ソ
PlayTone(FA,25); Wait(30); // ファ
PlayTone(MI,30); Wait(50); // ミー+休符
PlayTone(DO,50); Wait(55); // ドー
PlayTone(DO,50); Wait(55); // ドー
PlayTone(DO,50); Wait(55); // ドー
PlayTone(DO,50); Wait(70); // ドーー
PlayTone(DO,25); Wait(30); // ド
PlayTone(DO,25); Wait(30); // ド
PlayTone(RE,25); Wait(30); // レ
PlayTone(RE,25); Wait(30); // レ
PlayTone(MI,25); Wait(30); // ミ
PlayTone(MI,25); Wait(30); // ミ
PlayTone(FA,25); Wait(30); // ファ
PlayTone(FA,25); Wait(30); // ファ
PlayTone(MI,50); Wait(55); // ミ
PlayTone(RE,50); Wait(55); // レ
PlayTone(DO,50); Wait(55); // ドー
}}
task main()
{SetSensor(SENSOR_1,SENSOR_LIGHT);
while (true){start play_music; // 音楽を開始
while(SENSOR_1>40){ // 光源を見失う
OnRev(OUT_C);OnFwd(OUT_A);} // 旋回中
while(SENSOR_1<40){ // 光源を発見する
stop play_music; // 音楽を止める
OnFwd(OUT_A+OUT_C);}}} // その方向に前進
2.光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す
(作成者 サット&和知)
#define Do 523 // 音階の周波数の定義
#define Le 587
#define Mi 659
#define Fa 698
#define So 784
#define Ra 880
#define Si 988
task move_music() // チャルメラ♪
{
while (true)
{
PlayTone(So,20); Wait(22); // ソ
PlayTone(Ra,20); Wait(22); // ラ
PlayTone(Si,60); Wait(62); // シ
PlayTone(Ra,20); Wait(22); // ラ
PlayTone(So,20); Wait(42); // ソ
PlayTone(So,20); Wait(22); // ソ
PlayTone(Ra,20); Wait(22); // ラ
PlayTone(Si,20); Wait(22); // シ
PlayTone(Ra,20); Wait(22); // ラ
PlayTone(So,20); Wait(22); // ソ
PlayTone(Ra,60); Wait(62); // ラ
Wait(40);
}
}
task search_music() // 音階 ドミレファ…
{
while (true)
{
PlayTone(Do,10); Wait(12); // ド
PlayTone(Mi,10); Wait(12); // ミ
PlayTone(Le,10); Wait(12); // レ
PlayTone(Fa,10); Wait(12); // ファ
PlayTone(Mi,10); Wait(12); // ミ
PlayTone(So,10); Wait(12); // ソ
PlayTone(Fa,10); Wait(12); // ファ
PlayTone(Ra,10); Wait(12); // ラ
Wait(20);
}
}
task main()
{SetSensor(SENSOR_1,SENSOR_LIGHT);
while (true){start play_music;
while(SENSOR_1>40){
OnRev(OUT_C);OnFwd(OUT_A);}
while(SENSOR_1<40){
stop play_music;
OnFwd(OUT_A+OUT_C);}}}
{
SetSensor(SENSOR_1,SENSOR_LIGHT); // センサー1がセ光センサーであることを宣言
SetSensor(SENSOR_3,SENSOR_LIGHT); // センサー3がセ光センサーであることを宣言
while (true)
{
if(SENSOR_1>34 || SENSOR_3>34) // 光源を認識したら
{
start move_music; // 動いているときの音楽をならす
while (SENSOR_1>34 || SENSOR_3>34) // どちらかのセンサーが光源を認識してる限り
{
if(SENSOR_1>=SENSOR_3) // 左が明るかったら左へ
{
OnFwd (OUT_C);Off(OUT_A);
}
if(SENSOR_1<=SENSOR_3) // 右が明るかったら右へ
{
OnFwd(OUT_A);Off(OUT_C);
}
}
stop move_music; // 認識できなかったら動いているときの音楽を止める
}
else // 認識できていないと
{
start search_music; // 探しているときの音楽をならす
while (SENSOR_1<=34 && SENSOR_3<=34) // どちらのセンサーも光源を認識できない限り
{ 音楽をならし旋回する
Wait(1);
}
stop search_music; // 光源を認識できたら探しているときの音楽を止める
}
}
**工夫した点 [#m5002674]
最初はタイマーを使っていたが、何故かうまくいかなかったので、光センサーを2個使って光を覆うようにしたのが工夫したところです。これによりタイマーを使わず、光の明るさだけですべてを判断して動くことが可能になりました!
最初はタイマーを使っていたが、何故かうまくいかなかったので(多分タイマーの設定がうまくいかなかったのだろう)、光センサーを1 or2個使って光を覆うようにしたのが工夫したところです。これによりタイマーを使わず、光の明るさだけですべてを判断して動くことが可能になりました!
**難しかった点 [#j90070e7]
第1にプログラミングが全く思いつかなかったのが一番難しかった点です!最初はタイマーを使っていましたが、全くうまくいきませんでした!第2に曲をループ再生にするプログラムを組むと、何故か曲の出だしの音しか流れないという難点がありました。第3に曲を作ること自体が相当難しかったです。微妙な間隔などをプログラミングすることが非常に難しく骨が折れそうでした。
-プログラミングが全く思いつかなかったのが一番難しかった点です!最初はタイマーを使っていましたが、全くうまくいきませんでした。他の班のプログラムを参考にしたがそれでも上手くいかなかった、僕らの技術不足でプログラムの解読が不可能だった。
-曲をループ再生にするプログラムを組むと、曲の出だしの音しか流れないという難点がありました。この原因を考察すると、多分ループが何個も重なったので、音楽を開始するプログラムの位置がおかしかったのだろう。
-曲を作ること自体が相当難しかったです。微妙な間隔などをプログラミングすることが非常に難しく骨が折れそうでした。しかし最後にはなんとか動くようになり、問題も解決しました。
**感想&反省 [#y625fea8]
今回は今までと違いロボットには手こずらなかったが、プログラミングはすごく難しくて、時間がものすごくかかった。一応完成はしたが自分では気づいていない不完全な部分があるかもしれない。しかしみんなで頑張って作った最高の作品だと僕たちは思っています。そして今までやってきた知識を総動員してロボコン制覇に向けて頑張っていきたいと思っております。
**コメント [#pb6d0b73]
-この課題でのプログラミングの経験を活かしてロボコン頑張ってください。 -- [[松本(教員)]] &new{2006-07-14 (金) 19:55:53};
#comment