Écrire une fonction vide sans paramètres dans 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.

Exemple : Un exemple de programme pour qu'un robot parcoure une distance en ligne droite.

La fonction suivante permettra au robot de courir vers l'avant pourtotalEncencodeur. Il utilise la configuration V5 Clawbot.

Cette fonctionspinToPositionne retournera pas tant que le mouvement ne sera pas terminé. Il s’agit d’une action dite « synchronisée » – déterminée par le dernier paramètrevrai.

Sans utiliser de fonction définie par l'utilisateur :

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, "secs rev deg" );
   Brain.Screen.printAt(5,130, "%%.2f: %8.2f %8.2f", 
     Brain.Timer.value(),
     LeftMotor.position(rev), 
     LeftMotor.position(deg)); 
     wait(1000, msec);
}

L'échantillon peut donner le résultat suivant :

secs brut tr/min deg
2,06 5445 3,12 1089

Notez que votre test variera dans une très petite marge au niveau des décimales.

Avec une fonction définie par l'utilisateur :

L’exemple suivant montre comment capturer un ensemble d’opérations dans un seul appel de « fonction » réutilisable.

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();

}

La vidéo ci-dessous montre comment la séquence logique s'exécute depuis la fonction appelante main() :

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

Last Updated: