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; ফ্লোট WB = 36.75; // V5 Clawbot কনফিগারেশনের উপর ভিত্তি করে
দ্রষ্টব্য: আপনি যদি গিয়ার অনুপাত পরিবর্তন করেন, তাহলে গিয়ার অনুপাতের উপর ভিত্তি করে নিম্নোক্ত গণনাটি সামান্য পরিবর্তিত হতে পারে।
এটি মোটর এনকোডারের উপর ফোকাস করে অন্য নিবন্ধে আলোচনা করা হবে:
float EncPerCm = 360/(চাকা* M_PI); ফ্লোট EncPerDeg = WB/Wheel;
এই নমুনা শুধুমাত্র পিভট টার্নের জন্য। যেমন ডান মোটর = 100, বাম মোটর = -100, ইত্যাদি।
দ্বিতীয়ত, আপনি যখন নিম্নলিখিত নমুনাগুলি পর্যালোচনা করেন, তখন আপনাকে প্যারামিটার এবং তাদের নির্দিষ্টকরণের জন্য অনলাইন API রেফারেন্স দেখতে উৎসাহিত করা হয়। ভিজিট করুন:https://api.vexcode.cloud/v5/html/এবং অনুসন্ধান করুন, যেমন,rotateToপরামিতিগুলির সাথে নিজেকে পরিচিত করতে।
নমুনা 1: বিভিন্ন দূরত্বের উপর ভিত্তি করে স্ট্রেইট মোশন এনক্যাপসুলেট করুন
ভাসমান চাকা = 10.16;
ফ্লোট WB = 36.75;
ফ্লোট EncPerCm = 360.0 / (চাকা* 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( ভাসমান দূরত্ব){
LeftMotor.resetPosition();
LeftMotor.resetRotation();
RightMotor.resetPosition();
RightMotor.resetRotation();
float totalEnc = দূরত্ব * EncPerCm;
// নোট: "deg" vex:: namespace থেকে এসেছে। অতএব, আপনি
// "deg" নামে আরেকটি ভেরিয়েবল তৈরি করবেন না।
LeftMotor.setVelocity(50.0, শতাংশ);
LeftMotor.spinToPosition(totalEnc, deg, false);
RightMotor.setVelocity(50.0, শতাংশ);
RightMotor.spinToPosition(totalEnc, deg, false);
while (LeftMotor.isSpinning() || RightMotor.isSpinning() )
অপেক্ষা (50, msec);
রিটার্ন;
}
int main() {
vexcodeInit();
goStraight(100.0);
Brain.Screen.printAt(5,60, "সম্পন্ন");
রিপোর্টমোশন ভ্যালুস(বাম মোটর, 30);
রিপোর্টমোশন ভ্যালুস(রাইটমোটর, 60);
}
নমুনা 2: বিভিন্ন ডিগ্রির উপর ভিত্তি করে বাম দিকের বাঁক এনক্যাপসুলেট করুন
ভাসমান চাকা = 10.16;
ফ্লোট WB = 36.75;
ফ্লোট EncPerCm = 360.0 / (চাকা* M_PI);
float EncPerDeg = WB/Wheel;
অকার্যকর টার্নরাইট (ফ্লোট ডিগ্রী){
LeftMotor.resetPosition();
LeftMotor.resetRotation();
RightMotor.resetPosition();
RightMotor.resetRotation();
float totalEnc = ডিগ্রি * EncPerDeg;
// দ্রষ্টব্য: এই "deg" vex namespace
LeftMotor.setVelocity(100.0, শতাংশ);
LeftMotor.spinToPosition(totalEnc, deg, false);
RightMotor.setVelocity(-100.0, শতাংশ);
RightMotor.spinToPosition(-totalEnc, deg, false);
while(LeftMotor.isSpinning() || RightMotor.isSpinning() )
অপেক্ষা (50, msec);
রিটার্ন;
}
int main(){
...
টার্নরাইট (90.0);
...
}
নমুনা 3: একটি একক ফাংশনে বাম এবং ডান উভয়কেই এনক্যাপসুলেট করুন
void doTurning( ফ্লোট ডিগ্রি ) {
// টার্নের ঠিক একই কোড ডানদিকে
}
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 (মান নির্দিষ্ট করা হয়েছে)দিয়ে।
প্রিপ্রসেসর ম্যাক্রো একটি ভিন্ন বিস্তৃত বিষয় এবং এই নিবন্ধে আলোচনা করা হবে না।