ここでは4班が作成したプログラムを紹介しときます。
正確な測定とかはまったくしないで本能の赴くままに作ったので、ロボットなのに野性の感で動いてます。(おい!
ちなみに一度説明している命令は説明の必要がない限り、説明されていないはずなので自分で解読して下さいm(_ _)m
これはホームページに載せるために手直ししたのでちゃんと綺麗に描いてくれますよ。
始めはダメダメだったなorz なんせ何も考えずに行き当たりばったりで作ってましたからねぇ〜f^_^;
task main() { OnRev(OUT_A + OUT_C);//右下側の辺 Wait(100); Off(OUT_A+OUT_C);//停止 Wait(100); SetPower(OUT_C,7);Cに接続されているモーターのパワーを7にする。 OnRev(OUT_C); //右上側のカーブ Wait(400); Off(OUT_A+OUT_C); Wait(100); SetPower(OUT_A,7);SetPower(OUT_C,1); OnFwd(OUT_A); //左上側のカーブ Wait(400); Off(OUT_A+OUT_C); Wait(100); SetPower(OUT_A,1); SetPower(OUT_C,1); OnFwd(OUT_A + OUT_C); //左下側の辺 Wait(100); Off(OUT_A+OUT_C); }
これは比較的簡単に作れちゃいましたよ?どれくらい簡単かって言うとカップラーメン作るのと同じくらい簡単!!
task main () { SetSensor(SENSOR_1, SENSOR_LIGHT);//1に光センサーを認識させる SetSensor(SENSOR_3, SENSOR_LIGHT);//2に光センサーを認識させる repeat(10){ //以下の命令を10回繰り返す。(値を変えればそれだけ繰り返す) OnFwd(OUT_A+OUT_C); until (SENSOR_1 < 40)||(SENSOR_3 < 40); //センサーの値が40未満 //(適当に調節)になるまで // 次の命令を実行しない OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A);OnRev(OUT_C); Wait(94);} Off(OUT_A+OUT_C); }
これはラインを挟み込むタイプです。こっちの方が細い道や複雑なところも行けるオススメ品です。
task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetPower(OUT_A,1);SetPower(OUT_C,1); OnFwd(OUT_A+OUT_C); while(true){ //以下の命令が当てはまる限り、命令を繰り返す if(SENSOR_1<45) { //センサー1の明るさが45以下のとき以下の命令を実行する OnFwd(OUT_C); OnRev(OUT_A); until(SENSOR_1>45); //センサー1の明るさが45以上のとき以下の命令を実行する OnFwd(OUT_C+OUT_A);} if(SENSOR_3<45) { //センサー3の明るさが45以下のとき以下の命令を実行する OnFwd(OUT_A); OnRev(OUT_C); until(SENSOR_3>45); //センサー3の明るさが45以上のとき以下の命令を実行する OnFwd(OUT_C+OUT_A);} } }
こっちはラインをなぞっていくタイプなんですが、センサーを2つ使って速さを出そうとしているので、細い道や鋭角な部分では正しく動いてくれない可能性大ですf^_^;
なぜ?なぜって、作れば分かります。センサーの部分がでかくなるんですよ〜(TT) なんで、細い所や鋭角部が苦手です。
task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetPower(OUT_A,7);SetPower(OUT_C,7); OnFwd(OUT_A+OUT_C); while(true){ if(SENSOR_1>45) { OnFwd(OUT_A); OnRev(OUT_C); until(SENSOR_1<45); OnFwd(OUT_C+OUT_A);} if(SENSOR_3>45) { OnFwd(OUT_C); OnRev(OUT_A); until(SENSOR_3<45); OnFwd(OUT_C+OUT_A);} } }
これは簡単に思えたんですけど、やたら苦労しました。プログラムを見る限り、おかしな所はないはず!っていうのを何回繰り返したことか...いろんなことをやっていると偶然上手くいったって感じで出来ました。
ここらへんが感で作ってるからなんですかね〜?
task main () { #define RUNTIME 3000 SetPower(OUT_A,1);SetPower(OUT_C,1); SetSensor(SENSOR_1, SENSOR_LIGHT); while(RUNTIME) { if(SENSOR_1>40){ OnFwd(OUT_A+OUT_C); } else{ OnFwd(OUT_A);OnRev(OUT_C); } } Off(OUT_A+OUT_C); }
#defineは定義という意味です。例えばDo 523なら Doという変数を523という数値として定義するという意味です。PlayTone(Do,35)でDoの音つまり523(周波数)の音を鳴らします。これの繰り返しでドレミの歌を作りました。
#define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define So 784 #define Ra 880 #define Si 933 #define Doh 1047 task play_music() { while (true){ PlayTone(Do,35);Wait(45); PlayTone(Re,20);Wait(25); PlayTone(Mi,40);Wait(45); PlayTone(Do,20);Wait(25); PlayTone(Mi,30);Wait(35); PlayTone(Do,30);Wait(35); PlayTone(Mi,35);Wait(45); Wait(20); PlayTone(Re,35);Wait(45); PlayTone(Mi,25);Wait(25); PlayTone(Fa,20);Wait(25); PlayTone(Fa,20);Wait(25); PlayTone(Mi,20);Wait(30); PlayTone(Re,20);Wait(30); PlayTone(Fa,45);Wait(50); Wait(20); PlayTone(Mi,35);Wait(45); PlayTone(Fa,20);Wait(25); PlayTone(So,40);Wait(45); PlayTone(Mi,20);Wait(25); PlayTone(So,30);Wait(35); PlayTone(Mi,30);Wait(35); PlayTone(So,35);Wait(45); Wait(20); PlayTone(Fa,35);Wait(45); PlayTone(So,25);Wait(25); PlayTone(Ra,20);Wait(25); PlayTone(Ra,20);Wait(25); PlayTone(So,20);Wait(30); PlayTone(Fa,20);Wait(30); PlayTone(Ra,45);Wait(50); Wait(20); } } task main() { start play_music; Wait(2000); stop play_music; }