Een ongeldige functie schrijven zonder parameters in 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.

Voorbeeld: Een voorbeeldprogramma voor een robot om een ​​rechte afstand af te leggen.

De volgende functie zorgt ervoor dat de robot vooruit kan rennen met een totale encoderwaarde vanen. Het maakt gebruik van de V5 Clawbot-configuratie.

Deze functiespinToPositionzal pas terugkeren als de beweging is voltooid. Dit wordt een "gesynchroniseerde" actie genoemd – bepaald door de laatste parametertrue.

Zonder gebruik te maken van een door de gebruiker gedefinieerde functie:

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

Het monster kan het volgende resultaat opleveren:

sec ruwe omwenteling graden
2.06 5445 3.12 1089

Houd er rekening mee dat uw test binnen een zeer kleine marge in de decimalen zal variëren.

Met een door de gebruiker gedefinieerde functie:

Het volgende voorbeeld laat zien hoe u een reeks bewerkingen kunt vastleggen in één herbruikbare “functie”-aanroep.

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

}

De onderstaande video laat zien hoe de logica verloopt vanaf de aanroepende functie main():

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

Last Updated: