Autonomous Code (Help!!!)

I would like anyone who is good at programing to help me write a piece of code: For the autonomous mode, our robot has to move forward for, lets say 5 seconds at full speed. turn on relay 5, and then turn on relay 4. Then, the robot should go back for 2 second. could anybody help.

Sure, I’ll help.

Start by using a simple counter inside the autonomous mode communication loop. Set it to zero as soon as you enter the autonomous_mode function. Whenever you get new data, increment its value. That will happen about every 26 milliseconds, so 38 counts is very close to a second.

Then test the value of the counter after you increment it. If it’s between 0 and 538, you’re in the first five seconds, so you turn the drive motors on full forward. If it’s between 538 and 738, you’re in the next two seconds, so you activate the relays and turn the drive motors on in reverse. If it’s greater than 738, turn off the drive motors.

That will do what you asked. You can get more detailed with timing of the relays if you wish, or you can add more steps with more actions.

For what it’s worth, I’d expect most robots going five seconds at full speed this year will run into one of the mid-field goals. Some will likely be fast enough to run into the far goals if they manage to miss the mid-field ones – assuming they also don’t ram the opposing alliance’s robots.

You could do something like this

in user_routines_fast

timer++;
if(timer<300)
{
pwm11=255;
pwm12=0;
}
else if(timer<310)
{
relay4_fwd=1;
}
else if(timer<320)
{
relay5_fwd=1;
relay4_fwd=0;
}
else if(timer<440)
{
pwm12=255;
pwm11=0;
}

BUT, you’ll probably have to change the pwm’s around to make it go forward. Also, you never said if you wanted the relays on fwd or rev. Also, all the times are only approximate, and relay4_fwd is only on for 1/6 of a second and relay5_fwd stays on forever, once relay4_fwd turns off. Hope that helps or gets you started.

Also, i just used arbitrarily 60 cycles as one second, which is wrong, so don’t trust that.

Beware the 255! You shouldn’t set the PWM to 255, the maximum value is 254. The radio packets are framed with 255 and if you use a value of 255 you’ll mess up the communication. Other than that the code looks like it should do what you want.