Basisrobotbewegingen inkapselen 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.

Het belangrijkste doel is om u te laten zien hoe u enkele van de fundamentele bewegingscodes in functies kunt inkapselen, niet voor encoderberekeningen en bewegingsmanipulaties.

De volgende voorbeeldbewegingsfuncties helpen u bij het maken van uw basisbewegingscode:

  • Meer georganiseerd
  • Leesbaarder
  • Minder foutgevoelig

Allereerst moet u de volgende basisvariabelen definiëren:

zweefwiel = 10,16;
vlotter WB = 36,75; //gebaseerd op de V5 Clawbot-configuratie

Opmerking: Als u de overbrengingsverhouding wijzigt, kan de volgende berekening enigszins veranderen op basis van de overbrengingsverhouding.

Dit zal worden besproken in een ander artikel dat zich richt op de motor-encoder:

vlotter EncPerCm = 360/(wiel* M_PI);
vlotter EncPerDeg = WB/wiel;

Dit voorbeeld is alleen bedoeld voor draaibewegingen. Bijv rechtermotor = 100, linkermotor = -100, enz.

Ten tweede wordt u aangemoedigd om, wanneer u de volgende voorbeelden bekijkt, de online API-referentie op te zoeken voor de parameters en hun specificaties. Bezoek:https://api.vexcode.cloud/v5/html/en zoek bijvoorbeeld naarroterenToom vertrouwd te raken met de parameters.


Voorbeeld 1: kapsel een rechte beweging in op basis van verschillende afstanden

zweefwiel = 10,16; 
vlotter WB = 36,75; 
vlotter EncPerCm = 360,0 / (wiel* M_PI); 

void reportMotionValues(motor m, int line){

  Brain.Screen.printAt(5,line, "%8.2lf%8.2lf%8.2f", 
    m.position(rev), 
    m.position(deg)); 
}

// afstand is in centimeters
void goStraight( float distance ){
	
	LeftMotor.resetPosition();
	Linkermotor.resetRotation();
	Rechtermotor.resetPosition();
	Rechtermotor.resetRotation();
  	
	float totaalEnc = afstand * EncPerCm;
	
	// opmerking: “deg” komt uit de vex:: naamruimte. Daarom moet u 
        andere variabele maken die ook wel “deg” wordt genoemd. 

       LeftMotor.setVelocity(50,0, procent);
LeftMotor.spinToPosition(totalEnc, graden, false);

Rechtermotor.instelsnelheid(50,0, procent);
RightMotor.spinToPosition(totalEnc, deg, false); while (LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); retour; } int main() { vexcodeInit(); goStraight(100,0); Brain.Screen.printAt(5,60, "Gereed"); rapportMotionValues(Linkermotor, 30); rapportMotionValues(RightMotor, 60); }

Voorbeeld 2: Kapseleer bochten naar links op basis van verschillende graden

zweefwiel = 10,16; 
vlotter WB = 36,75; 
vlotter EncPerCm = 360,0 / (wiel* M_PI); 
vlotter EncPerDeg = WB / Wiel;

void turnRight( zwevende graden){
	
	LeftMotor.resetPosition();
	Linkermotor.resetRotation();
	Rechtermotor.resetPosition();
	Rechtermotor.resetRotation();
  	
	float totaalEnc = graden * EncPerDeg;
	
       // opmerking: deze “deg” komt uit vex naamruimte
       LeftMotor.setVelocity(100.0, procent);
LeftMotor.spinToPosition(totalEnc, graden, false);

Rechtermotor.instelsnelheid(-100,0, procent);
RightMotor.spinToPosition(-totalEnc, deg, false); while(LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); retour; } int hoofd(){ ... draaiRechts(90.0); ... }

Voorbeeld 3: Kapsel zowel links als rechts in één enkele functie

void doTurning( float graden ) {
	// exact dezelfde code als de turnRight hierboven
}

int main() {
...
   doTurning(90.0); // Draai naar rechts
...
   doTurning(-90,0); // Draai naar links
}

Voor meer geavanceerde programmering kunt u, als u uw code veel leesbaarder wilt maken, het volgende proberen:

#define doLeftTurn(d) doTurning(d)
#define doRigtTurn(d) doTurning(-d)

int main() {
...
   doLinksTurn(90,0);  
   doRightTurning(90,0);
...
}

#definewordt een preprocessormacro-expressie genoemd. Beschouw deze uitdrukking als een symbool. Waar dit symbool ook voorkomt in de code, wordt hetvervangendoor de uitdrukkingdoTurning(de opgegeven waarde).

Preprocessor-macro is een ander uitgebreid onderwerp en zal in dit artikel niet worden besproken.

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

Last Updated: