- if (now != before)
- switch (now % 10) {
- case 0:
- pxmc_spd(&mcsX0,a*400,0);
- pxmc_spd(&mcsX1,-a*700,0);
- break;
- case 1:
- pxmc_spd(&mcsX0,a*700,0);
- pxmc_spd(&mcsX1,-a*400,0);
- break;
- case 2:
- pxmc_spd(&mcsX0,a*2000,0);
- pxmc_spd(&mcsX1,-a*1200,0);
- break;
- case 3:
- pxmc_spd(&mcsX0,a*1200,0);
- pxmc_spd(&mcsX1,-a*2000,0);
- break;
- case 4:
- pxmc_spd(&mcsX0,a*1300,0);
- pxmc_spd(&mcsX1,-a*1000,0);
- break;
- case 5:
- pxmc_spd(&mcsX0,a*1300,0);
- pxmc_spd(&mcsX1,-a*1000,0);
- break;
- case 6:
- pxmc_spd(&mcsX0,a*100,0);
- pxmc_spd(&mcsX1,-a*300,0);
- break;
- case 7:
- pxmc_spd(&mcsX0,a*300,0);
- pxmc_spd(&mcsX1,-a*100,0);
- break;
- case 8:
- pxmc_spd(&mcsX0,a*2000,0);
- pxmc_spd(&mcsX1,-a*100,0);
- break;
- case 9:
- pxmc_spd(&mcsX0,a*4000,0);
- pxmc_spd(&mcsX1,-a*4000,0);
- if(a>0) a=-1;
- else a=1;
- break;
-
+ if (now > before) {
+ before = now;
+ DEB_LED_XOR(1);
+ }
+ if (now >= next) {
+ DEB_LED_XOR(3);
+ next = now + 1 + (rand() % 5);
+ //printf("%5ld->%5ld ", now, next);
+ if (rand() % 100 < 20)
+ speed = -speed; /* changing direction */
+ if (rand() % 100 < 50)
+ move(speed, 0); /* go stright ahaed */
+ else {
+ radius = (rand() % (2*(MAX_R-MIN_R))) - (MAX_R-MIN_R);
+ if (radius >= 0) radius += MIN_R;
+ else radius -= MIN_R;
+ move(speed, radius); /* turn */
+/* if (abs(radius) < WHEEL_DIST) */
+/* next = now + 1;/\* sharp cuves are short *\/ */