- 追加された行はこの色です。
- 削除された行はこの色です。
*腹減った [#nfa2a5c9]
*練習問題 [#hed12ed1]
-黄金の右
#define MOVE_TIME 18 //90度回るために必要な時間
sub lift_up() //リフトを上げるためのサブルーチン
{
Wait(40);
OnRev(OUT_B);
Wait(50);
Off(OUT_B);
}
sub lift_down() //リフトを下げるためのサブルーチン
{
Wait(40);
OnFwd(OUT_B);
Wait(50);
Off(OUT_B);
}
sub go_straight() //直進するためのサブルーチン
{
Wait(50);
repeat(3){
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(10);
Off(OUT_A+OUT_C);
Wait(10);}
}
sub turn_right() //右に曲がるためのサブルーチン
{
Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(MOVE_TIME);
Off(OUT_A+OUT_C);
}
sub turn_left() //左に曲がるためのサブルーチン
{
Wait(50);
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(MOVE_TIME);
Off(OUT_A+OUT_C);
}
task main()
{
Wait(50); //連続して動かすと徐々に誤差がでるため
OnFwd(OUT_A); //全ての行動の前には基本的に0、5秒間を開ける
OnFwd(OUT_C); //
Wait(10); //最初の「ノ」の字の飛び出る部分です
Off(OUT_A+OUT_C);
Wait(50); //タイヤを片方固定、もう一方を動かして、
OnFwd(OUT_A); //タイヤの間隔を利用し「ノ」の曲線部分を表現
Wait(40);
Off(OUT_A);
turn_right();
lift_up(); //筆を上げる
Wait(50);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(20);
Off(OUT_A+OUT_C);
OnFwd(OUT_C);
Wait(5);
Off(OUT_C);
turn_right();
lift_down();
Wait(50); //モーターの左右のパワーバランスが良くないの
repeat(4){ //で、小刻み、且つ微調整を行う
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(10);
Off(OUT_A+OUT_C);
Wait(10);}
Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(30);
Off(OUT_A+OUT_C);
lift_up();
Wait(50);
repeat(4){ //モーターの左右のパワーバランスが良くないの
OnFwd(OUT_A); //で、小刻み、且つ微調整を行う。さっきも書いたね!
OnFwd(OUT_C);
Wait(10);
Off(OUT_A+OUT_C);
Wait(10);}
Wait(50); //「口」の字に到達
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(12);
Off(OUT_A+OUT_C);
lift_down();
go_straight();
lift_up();
Wait(50);
repeat(4){
OnRev(OUT_A);
OnRev(OUT_C);
Wait(5);
Off(OUT_A+OUT_C);
Wait(10);}
turn_left(); //サブルーチンのオンパレード
lift_down();
go_straight();
turn_right();
go_straight();
turn_right();
lift_up();
go_straight();
turn_right();
turn_right();
lift_down();
go_straight();
} //終了
自分で作って何だけど、長ったらしいなあ。マシンのバランスが悪いためか、直進が右にカーブしてしまう素敵な機能を持っていたため、改良に改良を重ねました。結果、「右」というより「メロ」になってしまった。嗚呼無情、アーム、ジョー。
#comment