Ενθυλάκωση βασικών κινήσεων ρομπότ στο 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.

Ο κύριος στόχος είναι να σας δείξουμε πώς να ενσωματώσετε ορισμένους από τους βασικούς κώδικες κίνησης σε συναρτήσεις, όχι για υπολογισμούς κωδικοποιητή και χειρισμούς κίνησης.

Τα ακόλουθα δείγματα συναρτήσεων κίνησης θα σας βοηθήσουν να δημιουργήσετε τον βασικό κώδικα κινήσεών σας:

  • Πιο οργανωμένο
  • Πιο ευανάγνωστο
  • Λιγότερο επιρρεπές σε σφάλματα

Πρώτα απ 'όλα, θα πρέπει να ορίσετε τις ακόλουθες βασικές μεταβλητές:

float Wheel = 10,16;
float WB = 36,75; //με βάση τη διαμόρφωση του V5 Clawbot

Σημείωση: Εάν αλλάξετε τη σχέση μετάδοσης, ο ακόλουθος υπολογισμός ενδέχεται να αλλάξει ελαφρώς ανάλογα με τη σχέση μετάδοσης.

Αυτό θα συζητηθεί σε ένα άλλο άρθρο που εστιάζει στον κωδικοποιητή κινητήρα:

float EncPerCm = 360/(τροχός* M_PI);
float EncPerDeg = WB/Τροχός;

Αυτό το δείγμα προορίζεται μόνο για περιστροφική στροφή. Π.χ. δεξιός κινητήρας = 100, αριστερός κινητήρας = -100, κ.λπ.

Δεύτερον, όταν εξετάζετε τα ακόλουθα δείγματα, σας ενθαρρύνουμε να αναζητήσετε την ηλεκτρονική αναφορά API για τις παραμέτρους και τις προδιαγραφές τους. Επισκεφθείτε:https://api.vexcode.cloud/v5/html/και αναζητήστε, π.χ.,rotateToγια να εξοικειωθείτε με τις παραμέτρους.


Δείγμα 1: Ενσωμάτωση Ευθύγραμμης Κίνησης με βάση Διάφορες Αποστάσεις

float Wheel = 10.16; 
float WB = 36.75; 
float EncPerCm = 360.0 / (Wheel* M_PI); 

void reportMotionValues(motor m, int line){

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

//%8.2fαπόσταση είναι σε εκατοστά
void goStraight%8.2lffloat distance ){
	
	LeftMotor.resetPosition();
	LeftMotor.resetRotation();
	RightMotor.resetPosition();
	RightMotor.resetRotation();
  	
	float totalEnc = distance * EncPerCm;
	
	// σημείωση: Το "deg" προέρχεται από τον χώρο ονομάτων vex::. Επομένως, 
        θα πρέπει να δημιουργήσετε μια άλλη μεταβλητή με το όνομα "deg". 

       LeftMotor.setVelocity(50.0, ποσοστό);
LeftMotor.spinToPosition(totalEnc, βαθμός, false);

RightMotor.setVelocity(50.0, ποσοστό);
RightMotor.spinToPosition(totalEnc, βαθμός, false); while (LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); return; } int main() { vexcodeInit(); goStraight(100.0); Brain.Screen.printAt(5,60, "Ολοκληρώθηκε"); reportMotionValues(LeftMotor, 30); reportMotionValues(RightMotor, 60); }

Δείγμα 2: Ενσωμάτωση αριστερών στροφών με βάση διάφορες μοίρες

float Wheel = 10.16; 
float WB = 36.75; 
float EncPerCm = 360.0 / (Wheel* M_PI); 
float EncPerDeg = WB / Wheel;

void turnRight( float degrees){
	
	LeftMotor.resetPosition();
	LeftMotor.resetRotation();
	RightMotor.resetPosition();
	RightMotor.resetRotation();
  	
	float totalEnc = degrees * EncPerDeg;
	
       // σημείωση: αυτός ο "βαθμός" προέρχεται από τον χώρο ονομάτων vex
       LeftMotor.setVelocity(100.0, percent);
LeftMotor.spinToPosition(totalEnc, deg, false);

RightMotor.setVelocity(-100.0, percent);
RightMotor.spinToPosition(-totalEnc, deg, false); while(LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); return; } int main(){ ... Στροφή Δεξιά (90.0); ... }

Δείγμα 3: Ενσωμάτωση Αριστεράς και Δεξιάς σε μία μόνο συνάρτηση

void doTurning( float degrees ) {
	// ακριβώς ο ίδιος κώδικας με το turnRight παραπάνω
}

int main() {
...
   doTurning(90.0); // Δεξιά περιστροφή
...
   doTurning(-90.0); // Αριστερή περιστροφή
}

Για πιο προηγμένο προγραμματισμό, αν θέλετε να κάνετε τον κώδικά σας πολύ πιο ευανάγνωστο, μπορείτε να δοκιμάσετε τα εξής:

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

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

#defineονομάζεται μακροεντολή προεπεξεργαστή. Δες αυτή την έκφραση ως σύμβολο. Όπου κι αν εμφανίζεται αυτό το σύμβολο στον κώδικα, τοθα αντικατασταθείμε την έκφρασηdoTurning (η καθορισμένη τιμή).

Η μακροεντολή προεπεξεργαστή είναι ένα διαφορετικό, εκτενές θέμα και δεν θα συζητηθεί σε αυτό το άρθρο.

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

Last Updated: