- 追加された行はこの色です。
- 削除された行はこの色です。
[[2011a]]
#define SIGNALON 1
sub left() //左に曲がるためのサブルーチン。
{
OnRev(OUT_C); OnFwd(OUT_A);
Wait(95);
Off(OUT_C+OUT_A);
Wait(40);
}
sub right() //右に曲がるためのサブルーチン。
{
OnFwd(OUT_C); OnRev(OUT_A);
Wait(95);
Off(OUT_C+OUT_A);
Wait(40);
}
sub goball()
{
OnFwd(OUT_A+OUT_C);
until((SENSOR_1 == 1)&&(SENSOR_2 == 1));
*プログラム [#v2d5610c]
#define SIGNALON 1
#define t90 95 //ここ電池が少なくなってきて90度の時間が変わったら変えて。
sub left(){ //左に曲がるためのサブルーチン。
OnFwd(OUT_A); OnRev(OUT_C);
Wait(t90);
Off(OUT_C+OUT_A);
Wait(40);
}
sub right(){ //右に曲がるためのサブルーチン。
OnFwd(OUT_C); OnRev(OUT_A);
Wait(t90);
Off(OUT_C+OUT_A);
Wait(40);
}
sub goball() {
OnFwd(OUT_A+OUT_C);
until((SENSOR_1 == 1)&&(SENSOR_2 == 1));
Off(OUT_C+OUT_A);
Wait(40);
}
}
void go(int t) { //前に移動するための関数。入力された時間だけに移動
OnFwd(OUT_A+OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
Wait(50);
}
void back(int t) { //後ろに移動するための関数。入力された時間だけ前に移動
OnRev(OUT_A+OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
Wait(50);
}
sub up() { //アームを持ち上げるサブルーチン。
OnFwd(OUT_B);
Wait(45);
Off(OUT_B);
Wait(20);
}
sub down() { //アームを下げるサブルーチン。
OnRev(OUT_B);
Wait(30);
Off(OUT_B);
Wait(20);
}
task main () {
SetSensor(SENSOR_1, SENSOR_TOUCH);
SetSensor(SENSOR_2, SENSOR_TOUCH);
int time=60;
int backtime=0;
right();
go(60);
left();
repeat(3)
{
ClearTimer(0);
goball();
backtime = FastTimer(0);
back(6);
left();
back(90);
down(); //down arm
Wait(100); //アームの揺れが落ち着くまで待つ
go(time);//push ball and go
up(); //up arm
go(250-time);
time=time+40;
right();
go(30); //テニスボールを取りにいく
down(); //アームを下ろしてボールをつかむ
back(backtime);
up(); //ボールを打つ機体のためにボールを置く
back(150);
SendMessage(SIGNALON); //相方にボールを置いたことを伝える
//until (Message() == 1); //相方がボールをとり、はなれたら信号を送ってもらう
go(150);
right();
go(120);
left();
}
}
void go(int t) //前に移動するための関数。入力された時間だけに移動
{
OnFwd(OUT_A+OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
Wait(50);
}
**さくらだから連絡 [#de56e36a]
とりあえずこっちの動きはひと通り出来たよ。~
あとは連携の部分なんだけど、相方ロボがボールを取ったあとこっちのロボに「1」という信号送って。~
そしたら//until (Message() == 1);の//をとれば連携できるはずだから。~
あとさくらだは他の用事と重なってしまったためにロボコンにいけない…。ゴメン…。~
void back(int t) //後ろに移動するための関数。入力された時間だけ前に移動
{
OnRev(OUT_A+OUT_C);
Wait(t);
Off(OUT_A+OUT_C);
Wait(50);
}
sub up() //ペンを持ち上げるサブルーチン。線をかくずに移動するとき。
{
OnFwd(OUT_B);
Wait(15);
Off(OUT_B);
Wait(20);
}
sub down() //ペンを下げるサブルーチン。線を引くとき。
{
OnRev(OUT_B);
Wait(15);
Off(OUT_B);
Wait(20);
}
task main ()
{
SetSensor(SENSOR_1, SENSOR_TOUCH);
SetSensor(SENSOR_2, SENSOR_TOUCH);
int time=20;
right();
go(60);
left();
repeat(3)
{
goball();
back(3);
left();
back(100);
down(); //down arm
//go(time);//push ball and go
//up(); //up arm
//go(100-time);
//time=time+20;
//right();
//go(5);
//down();
//back(100);
// up();
//back(50);
//SendMessage(SIGNALON);
//go(50);
}
}