Pagrindinių robotų judesių apipavidalinimas 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.

Pagrindinis tikslas yra parodyti jums, kaip kai kuriuos pagrindinius judesio kodus įtraukti į funkcijas, o ne kodavimo įrenginiui apskaičiuoti ir manipuliuoti judesiais.

Šios pavyzdinės judesio funkcijos padės sukurti pagrindinį judesių kodą:

  • Labiau organizuota
  • Skaitomesnis
  • Mažiau klaidų

Visų pirma, turėsite apibrėžti šiuos pagrindinius kintamuosius:

plūduriuojantis ratas = 10,16;
plūduriuojantis WB = 36,75; //remiantis V5 Clawbot konfigūracija

Pastaba: jei pakeisite pavaros santykį, šis skaičiavimas gali šiek tiek pasikeisti, atsižvelgiant į perdavimo skaičių.

Tai bus aptarta kitame straipsnyje, kuriame pagrindinis dėmesys skiriamas variklio kodavimo įrenginiui:

float EncPerCm = 360/(ratas* M_PI);
float EncPerDeg = WB/ratas;

Šis pavyzdys skirtas tik sukimuisi. Pvz dešinysis variklis = 100, kairysis variklis = -100 ir kt.

Antra, kai peržiūrite toliau pateiktus pavyzdžius, rekomenduojame ieškoti parametrų ir jų specifikacijų internetinėje API nuorodoje. Apsilankykite adresu:https://api.vexcode.cloud/v5/html/ir ieškokite, pvz.,rotateTo, kad susipažintumėte su parametrais.


1 pavyzdys: Įtraukite tiesioginį judesį pagal įvairius atstumus

plūduriuojantis ratas = 10,16; 
plūduriuojantis WB = 36,75; 
float EncPerCm = 360,0 / (ratas* M_PI); 

void reportMotionValues(motor m, int line){

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

// atstumas nurodytas centimetrais
void goStraight( float distance ){
	
	LeftMotor.resetPosition();
	LeftMotor.resetRotation();
	RightMotor.resetPosition();
	RightMotor.resetRotation();
  	
	float totalEnc = atstumas * EncPerCm;
	
	// pastaba: „deg“ yra iš vex:: vardų erdvės. Todėl neturėtumėte 
        // sukurti kito kintamojo, taip pat pavadinto „deg“. 

       LeftMotor.setVelocity(50,0, proc.);
LeftMotor.spinToPosition(totalEnc, deg, false);

RightMotor.setVelocity(50.0, proc.);
RightMotor.spinToPosition(totalEnc, deg, false); while (LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); grąžinimas; } int main() { vexcodeInit(); goStraight(100.0); Brain.Screen.printAt(5,60, "Atlikta"); reportMotionValues(LeftMotor, 30); reportMotionValues(RightMotor, 60); }

2 pavyzdys: Įtraukite posūkius į kairę pagal įvairius laipsnius

plūduriuojantis ratas = 10,16; 
plūduriuojantis WB = 36,75; 
float EncPerCm = 360,0 / (ratas* M_PI); 
plūduriuoti EncPerDeg = WB / Ratas;

void posūkis į dešinę( plūduriavimo laipsniai){
	
	LeftMotor.resetPosition();
	LeftMotor.resetRotation();
	RightMotor.resetPosition();
	RightMotor.resetRotation();
  	
	float totalEnc = laipsniai * EncPerDeg;
	
       // pastaba: šis „deg“ yra iš vex vardų erdvės
       LeftMotor.setVelocity(100.0, percent);
LeftMotor.spinToPosition(totalEnc, deg, false);

RightMotor.setVelocity(-100,0, proc.);
RightMotor.spinToPosition(-totalEnc, deg, false); while(LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); grąžinimas; } int main(){ ... pasukti į dešinę(90.0); ... }

3 pavyzdys: kairę ir dešinę įterpkite į vieną funkciją

void doTurning( float laipsniai ) {
	// lygiai toks pat kodas kaip turnRight virš
}

int main() {
...
   doTurning(90.0); // Dešinysis sukimosi posūkis
...
   doTurning(-90.0); // Suka į kairę
}

Jei norite, kad programavimas būtų sudėtingesnis, jei norite, kad jūsų kodas būtų daug lengviau skaitomas, galite išbandyti šiuos veiksmus:

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

int main() {
...
   doLeftTurn(90.0);  
   doRightTurning(90.0);
...
}

#definevadinama išankstinio procesoriaus makro išraiška. Pažvelkite į šią išraišką kaip į simbolį. Kad ir kur būtų šis simbolis kode, jisbus pakeistasišraiškadoTurning (nurodyta reikšmė).

Išankstinio procesoriaus makrokomanda yra kita plati tema ir šiame straipsnyje ji nebus aptariama.

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

Last Updated: