- 追加された行はこの色です。
- 削除された行はこの色です。
[[池尻のノート>2005/C1/池尻]]
*四角形[#hed12ed1]
**プログラム [#eff22c62]
#define MOVE_TIME 145
task main()
{
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(300);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(MOVE_TIME);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(300);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(MOVE_TIME);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(300);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(MOVE_TIME);#define MOVE_TIME 145
}
**感想 [#bcdd5024]
まあまあ簡単やった。
*練習問題(妥協の右) [#hed12ed1]
**プログラム [#eb9aea6c]
#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();
} //終了
}
** [#md163209]
マシンのバランスが悪いためか、直進が右にカーブしてしまう素敵な機能を持っていたため、改良に改良を重ねました。結果、成功しました。
*タッチセンサー [#hed12ed1]
*光センサー [#hed12ed1]
#define T 40
task main ()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
while (true) {
if (SENSOR_2 < T) {
OnFwd(OUT_A);
Off(OUT_C);
} else {
Off(OUT_A);
OnFwd(OUT_C);
}
}
}
*光センサー(前後に1個設置) [#hed12ed1]
#define T 40
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while (true) {
if ((SENSOR_1 < T) &&(SENSOR_3 < T)){
OnFwd(OUT_A);
OnFwd(OUT_C);
} if (SENSOR_1 < T){
OnFwd(OUT_A);
Off(OUT_C);
}if(SENSOR_3 < T){
Off(OUT_A);
OnFwd(OUT_C);
}
}
}