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.
Galvenais mērķis ir parādīt, kā dažus pamata kustības kodus iekapsulēt funkcijās, nevis kodētāja aprēķināšanai un kustību manipulācijām.
Tālāk norādītie kustību funkciju paraugi palīdzēs izveidot pamata kustību kodu:
- Organizētāk
- Lasāmāks
- Mazāk pakļauti kļūdām
Pirmkārt, jums būs jādefinē šādi pamata mainīgie:
pludiņa ritenis = 10,16; peldēt WB = 36,75; //pamatojoties uz V5 Clawbot konfigurāciju
Piezīme: ja maināt pārnesuma attiecību, tālāk norādītais aprēķins var nedaudz mainīties, pamatojoties uz pārnesuma attiecību.
Tas tiks apspriests citā rakstā, kas koncentrējas uz motora kodētāju:
pludiņš EncPerCm = 360/(ritenis* M_PI); peldēt EncPerDeg = WB/Wheel;
Šis paraugs ir paredzēts tikai pagriezienam. Piem labais motors = 100, kreisais motors = -100 utt.
Otrkārt, pārskatot tālāk norādītos paraugus, ieteicams meklēt tiešsaistes API atsauci parametriem un to specifikācijām. Apmeklējiet:https://api.vexcode.cloud/v5/html/un meklējiet, piemēram,rotateTo, lai iepazītos ar parametriem.
1. paraugs: iekapsulējiet taisnu kustību, pamatojoties uz dažādiem attālumiem
pludiņa ritenis = 10,16;
peldēt WB = 36,75;
pludiņš EncPerCm = 360,0 / (ritenis* M_PI);
void reportMotionValues(motor m, int line){
Brain.Screen.printAt(5,line, "%8.2lf%8.2lf%8.2f",
m.position (apgr.),
m.position (deg));
}
// attālums ir centimetros
void goStraight( pludiņa attālums ){
LeftMotor.resetPosition();
LeftMotor.resetRotation();
RightMotor.resetPosition();
RightMotor.resetRotation();
float totalEnc = distance * EncPerCm;
// piezīme: “deg” ir no vex:: nosaukumvietas. Tāpēc nevajadzētu
// izveidot citu mainīgo, kas nosaukts arī kā “deg”.
LeftMotor.setVelocity(50,0, procenti);
LeftMotor.spinToPosition(totalEnc, gr, false);
RightMotor.setVelocity(50,0, procenti);
RightMotor.spinToPosition(totalEnc, gr, false);
while (LeftMotor.isSpinning() || RightMotor.isSpinning() )
wait(50, msec);
atgriešanās;
}
int main() {
vexcodeInit();
goStraight(100.0);
Brain.Screen.printAt(5,60, "Gatavs");
reportMotionValues(LeftMotor, 30);
reportMotionValues(RightMotor, 60);
}
2. paraugs: iekapsulējiet kreisos pagriezienus, pamatojoties uz dažādiem grādiem
pludiņa ritenis = 10,16;
peldēt WB = 36,75;
pludiņš EncPerCm = 360,0 / (ritenis* M_PI);
pludiņš EncPerDeg = WB / ritenis;
void turnRight( pludiņa grādi){
LeftMotor.resetPosition();
LeftMotor.resetRotation();
RightMotor.resetPosition();
RightMotor.resetRotation();
float totalEnc = grādi * EncPerDeg;
// piezīme: šis “deg” ir no vex nosaukumvietas
LeftMotor.setVelocity(100.0, procenti);
LeftMotor.spinToPosition(totalEnc, gr, false);
RightMotor.setVelocity(-100,0, procenti);
RightMotor.spinToPosition(-totalEnc, gr, false);
while(LeftMotor.isSpinning() || RightMotor.isSpinning() )
wait(50, msec);
atgriešanās;
}
int main(){
...
pagriezt pa labi(90.0);
...
}
3. paraugs: iekapsulējiet gan kreiso, gan labo pusi vienā funkcijā
void doTurning( pludiņa grādi ) {
// tieši tāds pats kods kā turnRight virs
}
int main() {
...
doTurning(90.0); // Pagrieziens pa labi
...
doTurning(-90.0); // Pagrieziens pa kreisi
}
Uzlabotai programmēšanai, ja vēlaties savu kodu padarīt daudz lasāmāku, varat izmēģināt tālāk norādītās darbības.
#define doLeftTurn(d) doPagrieziens(d)
#define doRigtTurn(d) doPagrieziens(-d)
int main() {
...
doLeftTurn(90.0);
doRightTurning(90.0);
...
}
#definesauc par priekšprocesora makro izteiksmi. Skatieties uz šo izteiksmi kā simbolu. Jebkurā vietā, kur kodā parādās šis simbols, tastiks aizstātsar izteiksmidoTurning (norādītā vērtība).
Priekšprocesora makro ir cita plaša tēma, un šajā rakstā tas netiks apspriests.