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.
मुख्य लक्ष्य आपको यह दिखाना है कि कुछ मौलिक गति कोडों को कार्यों में कैसे समाहित किया जाए, न कि एनकोडर गणना और गति हेरफेर के लिए।
निम्नलिखित नमूना गति फ़ंक्शन आपके मूल गति कोड बनाने में मदद करेंगे:
- अधिक संगठित
- अधिक पठनीय
- कम त्रुटि प्रवण
सबसे पहले, आपको निम्नलिखित बुनियादी चर परिभाषित करने होंगे:
फ्लोट व्हील = 10.16; फ्लोट डब्ल्यूबी = 36.75; //V5 क्लॉबोट कॉन्फ़िगरेशन पर आधारित
नोट: यदि आप गियर अनुपात बदलते हैं, तो गियर अनुपात के आधार पर निम्नलिखित गणना थोड़ी बदल सकती है।
मोटर एनकोडर पर केंद्रित एक अन्य लेख में इस पर चर्चा की जाएगी:
फ्लोट EncPerCm = 360/(पहिया* M_PI); फ्लोट 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%8.2lf%8.2f",
m.position(rev),
m.position(deg));
}
// दूरी सेंटीमीटर में है
void goStraight( float distance ){
LeftMotor.resetPosition();
LeftMotor.resetRotation();
RightMotor.resetPosition();
RightMotor.resetRotation();
float totalEnc = distance * EncPerCm;
// नोट: “deg” vex:: नामस्थान से है। इसलिए, आपको
// “deg” नाम से एक और चर नहीं बनाना चाहिए।
LeftMotor.setVelocity(50.0, प्रतिशत);
LeftMotor.spinToPosition(totalEnc, deg, false);
RightMotor.setVelocity(50.0, प्रतिशत);
RightMotor.spinToPosition(totalEnc, deg, false);
while (LeftMotor.isSpinning() || RightMotor.isSpinning() )
wait(50, msec);
return;
}
int main() {
vexcodeInit();
goStraight(100.0);
Brain.Screen.printAt(5,60, "Done");
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;
// नोट: यह “deg” vex नामस्थान से है
LeftMotor.setVelocity(100.0, प्रतिशत);
LeftMotor.spinToPosition(totalEnc, deg, false);
RightMotor.setVelocity(-100.0, प्रतिशत);
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(निर्दिष्ट मान)से प्रतिस्थापित कर दिया जाएगा।
प्रीप्रोसेसर मैक्रो एक अलग व्यापक विषय है और इस लेख में इस पर चर्चा नहीं की जाएगी।