Escribir una función nula sin parámetros en VEXcode Pro V5

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

Ejemplo: Un programa de ejemplo para que un robot recorra una distancia en línea recta.

La siguiente función permitirá que el robot avance durantetotalEncencoder. Utiliza la configuración V5 Clawbot.

Esta funciónspinToPositionno devolverá ningún valor hasta que el movimiento esté completo. Esto se denomina acción “sincronizada”, determinada por el último parámetroverdadero.

Sin utilizar una función definida por el usuario:

int main() {
   vexcodeInit();  

   LeftMotor.resetPosition ();
   LeftMotor.setVelocity(100.0, percent);
   LeftMotor.spinToPosition(500.0, deg, true);


   Brain.Screen.printAt(5,30, "secs rev deg" );
   Brain.Screen.printAt(5,60, "%.2f: %8.2f %8.2f", 
     Brain.Timer.value(), 
     LeftMotor.position(rev), 
     LeftMotor.position(deg)); 
     wait(1000, msec);

   LeftMotor.resetPosition ();
   LeftMotor.setVelocity(-100.0, percent);
   LeftMotor.spinToPosition(-1000.0, c, true);

   Brain.Screen.printAt(5,100, "segs rev deg" );
   Brain.Screen.printAt(5,130, "%%.2f: %8.2f %8.2f", 
     Brain.Timer.value(),
     LeftMotor.position(rev), 
     LeftMotor.position(deg)); 
     wait(1000, msec);
}

La muestra puede dar el siguiente resultado:

segundos brutos rev grados
2.06 5445 3.12 1089

Tenga en cuenta que su prueba variará dentro de un margen muy pequeño en los lugares decimales.

Con una función definida por el usuario:

El siguiente ejemplo muestra cómo capturar un conjunto de operaciones en una única llamada de "función" reutilizable.

void reportMotionValues() {

  Brain.Screen.printAt(5, 60, "%.2f: %8.2f %8.2f",
    Brain.Timer.value(), 
    LeftMotor.position(rev),
    LeftMotor.position(deg)); 
}


int main() {
   vexcodeInit();  

   LeftMotor.resetPosition();
   LeftMotor.setVelocity(50.0, percent);
   LeftMotor.spinToPosition(500.0, deg, true);
   reportMotionValues();

   LeftMotor.resetPosition ();
   LeftMotor.setVelocity(-50.0, percent);
   LeftMotor.spinToPosition(-500.0, deg, true);
   reportMotionValues();

}

El siguiente video muestra cómo fluye la secuencia lógica desde la función que realiza la llamada, main():

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: