*プログラム [#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(); } } **さくらだから連絡 [#de56e36a] とりあえずこっちの動きはひと通り出来たよ。~ あとは連携の部分なんだけど、相方ロボがボールを取ったあとこっちのロボに「1」という信号送って。~ そしたら//until (Message() == 1);の//をとれば連携できるはずだから。~ あとさくらだは他の用事と重なってしまったためにロボコンにいけない…。ゴメン…。~