Log in

View Full Version : EasyC: Execute code before autonomous


Greg Marra
07-01-2007, 20:03
Hello,

Is there a way to execute code in a loop before the autonomous mode begins? I know that the help says you can not, but our team utilizes a dashboard, and it is very helpful to be able to send back the values of certain sensors to make sure they are working properly.

Does anyone have the experience with EasyC to help me out?

-Greg

Tom Bottiglieri
07-01-2007, 20:05
Maybe a loop in the initilization routine?

Kingofl337
07-01-2007, 20:08
Yes, just write the function you want to use and put it in intialize. It will execute any code in this function before the match starts. Check this thread out.

http://www.chiefdelphi.com/forums/showthread.php?t=44749&page=2

Greg Marra
07-01-2007, 20:14
Yes, just write the function you want to use and put it in intialize. It will execute any code in this function before the match starts. Check this thread out.

http://www.chiefdelphi.com/forums/showthread.php?t=44749&page=2

So my understanding is, I need to create a while loop in Initialize that loops as long as IsAutonomous == 0 and IsEnabled == 0? That sounds like a slightly hackish solution, since WPIlib must be checking these variables to call Autonomous and OperatorControl anyway.

Kingofl337
07-01-2007, 20:18
You only need to call isEnabled to make sure the while loop ends and you don't get stuck in initialize. Initialize is run every time you reset your robot to calibrate any sensors that may need it.


void Initialize ( void )
{
while ( !IsEnabled() ) // while the robot is not enabled
{
if ( GetOIDInput ( 1 , 1 ) ) // If Trigger is Pulled Go Next Auto
{
automode ++ ;
}
else if ( GetOIDInput ( 1 , 2 ) ) // If Thumb is pushed go prev automode
{
automode -- ;
}
SetUserDisplay ( automode ) ; // send current automode to OI display
}
}

Greg Marra
07-01-2007, 20:23
You only need to call isEnabled to make sure the while loop ends and you don't get stuck in initialize. Initialize is run every time you reset your robot to calibrate any sensors that may need it.

while ( !IsEnabled() ) {
your code

}

Excellent. Thanks!

DanDon
07-01-2007, 21:15
You only need to call isEnabled to make sure the while loop ends and you don't get stuck in initialize. Initialize is run every time you reset your robot to calibrate any sensors that may need it.


void Initialize ( void )
{
while ( IsEnabled() ) // while the robot is not enabled
{
if ( GetOIDInput ( 1 , 1 ) ) // If Trigger is Pulled Go Next Auto
{
automode ++ ;
}
else if ( GetOIDInput ( 1 , 2 ) ) // If Thumb is pushed go prev automode
{
automode -- ;
}
SetUserDisplay ( automode ) ; // send current automode to OI display
}
}


Shouldn't that be:

while ( !IsEnabled() ) // while the robot is not enabled
{
if ( GetOIDInput ( 1 , 1 ) ) // If Trigger is Pulled Go Next Auto
{
automode ++ ;
}
else if ( GetOIDInput ( 1 , 2 ) ) // If Thumb is pushed go prev automode
{
automode -- ;
}
SetUserDisplay ( automode ) ; // send current automode to OI display
}?

Kingofl337
07-01-2007, 21:30
yeah forgot the ! fixed thanks.