- 追加された行はこの色です。
- 削除された行はこの色です。
*腹減った [#nfa2a5c9]
*課題1(書道ロボ) [#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
* 光センサ [#p2ce82f0]
-奇跡的な軌跡
task main ()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
while (true) {
if ((SENSOR_2 < 40) && (SENSOR_3 < 40)){
OnFwd(OUT_A+OUT_C);
}
if ((SENSOR_2 < 40) && (SENSOR_3 > 40)) {
OnFwd(OUT_C);
Off(OUT_A);
}
if ((SENSOR_2 > 40) && (SENSOR_3 < 40)) {
OnFwd(OUT_A);
Off(OUT_C);
}
}
}
-細かいところで工夫をからしていますね。良くできています。 -- [[かとりーぬ]] &new{2005-11-25 (金) 19:01:40};
-プログラムの表題がすばらしい! -- [[教員(松本)]] &new{2005-12-28 (水) 13:09:13};
#comment