VEXcode V5-এ কাস্টম কন্ট্রোলার কোড

কন্ট্রোলার ব্যবহার করা আপনার রোবটকে একটি টাস্ক সম্পূর্ণ করতে গাড়ি চালানো এবং সরানো সহজ করে তুলতে পারে। যাইহোক, ড্রাইভ প্রোগ্রাম ব্যবহার করার সীমাবদ্ধতা রয়েছে এবং আপনার রোবট তৈরি বা হাতের কাজের উপর নির্ভর করে, আপনি বিভিন্ন নিয়ন্ত্রণ চাইতে পারেন। কন্ট্রোলারের কোডিং আপনাকে কন্ট্রোলারটিকে অপ্টিমাইজ করার অনুমতি দেয় যাতে এটি আপনার রোবট এবং হাতের কাজটি আরও ভালভাবে ফিট করে। VEXcode V5 এ কন্ট্রোলার কোড করার বিভিন্ন উপায় রয়েছে। প্রতিটিরই সুবিধা এবং সীমাবদ্ধতা রয়েছে এবং কিছু পদ্ধতি পছন্দসই ফলাফলের উপর নির্ভর করে নির্দিষ্ট পরিস্থিতিতে আরও উপযুক্ত।

এই নিবন্ধটি আপনাকে VEXcode V5-এ কন্ট্রোলারের কাস্টম কোডিং করার জন্য তিনটি ভিন্ন বিকল্পের মাধ্যমে নিয়ে যাবে। প্রতিটি পদ্ধতির সুবিধা, সীমাবদ্ধতা এবং একটি পদ্ধতি বেছে নেওয়ার সময় আপনাকে গাইড করার জন্য একটি উদাহরণ ব্যবহারের ক্ষেত্রে বর্ণনা করা হবে। এই নিবন্ধের উদ্দেশ্যে, দেখানো সমস্ত কোড উদাহরণ Clawbot-এর জন্য তৈরি করা হয়েছে। যাইহোক, একই ধারণা builds.vex.com, এবং কাস্টম বিল্ডে পাওয়া অসংখ্য অন্যান্য বিল্ডে প্রয়োগ করা যেতে পারে।

বিকল্প 1: ডিভাইস কনফিগারেশনে বোতাম বরাদ্দ করা

আপনি যখন স্পিডবট বা ক্লববটের মতো একটি স্ট্যান্ডার্ড বিল্ড ব্যবহার করছেন এবং দ্রুত উঠতে এবং দৌড়াতে চান তখন এই বিকল্পটি দুর্দান্ত।

এই বিকল্পটি আপনাকে ডিভাইস কনফিগারেশনে কন্ট্রোলারের বোতামগুলিতে মোটর, একটি ড্রাইভট্রেন বা মোটর গ্রুপ নির্ধারণ করতে দেয়। ডিভাইস কনফিগারেশনে কন্ট্রোলারে বোতামগুলি কীভাবে বরাদ্দ করা যায় সে সম্পর্কে আরও তথ্যের জন্য, এই নিবন্ধটি দেখুন।

VEXcode V5 ডিভাইস মেনু, যেখানে কন্ট্রোলার অপশনগুলো দেখানো হয়েছে। বাটন নিয়ন্ত্রণের ডায়াগ্রাম থেকে দেখা যায় যে, দুটি জয়স্টিক রোবটটিকে ট্যাঙ্ক ড্রাইভ কনফিগারেশনে চালনা করে। আপ এবং ডাউন বাটনগুলো একটি আর্মমোটরগ্রুপ নিয়ন্ত্রণ করে এবং R অক্ষের বাটনগুলো একটি ক্লমোটর নিয়ন্ত্রণ করে।

বিকল্প 1 এর সারাংশ: ডিভাইস কনফিগারেশনে বোতাম বরাদ্দ করা

সুবিধা সীমাবদ্ধতা উদাহরণ পরিস্থিতি
  • কোন কোডিং প্রয়োজন ছাড়া দ্রুত সেটআপ
  • সবচেয়ে সহজ পদ্ধতি
  • সহজেই সামঞ্জস্যযোগ্য
  • বোতামগুলিতে পৃথক মোটর, একটি আদর্শ ড্রাইভট্রেন এবং মোটর গ্রুপগুলি বরাদ্দ করতে পারে
  • বোতাম অ্যাসাইনমেন্ট কন্ট্রোলারের বোতামের সংখ্যার মধ্যে সীমাবদ্ধ
  • ড্রাইভট্রেন 4টি মোটরের বেশি বা কাস্টমাইজ করা যাবে না (শুধুমাত্র একটি স্ট্যান্ডার্ড ড্রাইভ সমর্থিত, এইচ ড্রাইভ, হলোনমিক বা অন্যান্য কাস্টম ড্রাইভট্রেন নয়)
  • স্পিডবট, ক্লবট বা সেই স্ট্যান্ডার্ড বিল্ডগুলির একটি সাধারণ পরিবর্তনের মতো একটি স্ট্যান্ডার্ড বিল্ড ম্যানিপুলেট করা। উদাহরণস্বরূপ, একটি মোটর গ্রুপ দ্বারা নিয়ন্ত্রিত সামনের সাথে সংযুক্ত একটি ইনটেক সহ একটি স্পিডবট।
  • কোন বোতামগুলি খুব বেশি কোডিং ছাড়াই দ্রুত রোবটের বিভিন্ন আচরণের সাথে মিলে যায় তা ম্যানিপুলেট করা

বিকল্প 2: একটি ফরএভার লুপ ব্যবহার করা

আপনি যদি স্ট্যান্ডার্ড বিল্ডের পরিবর্তে একটি কাস্টম বিল্ড ব্যবহার করেন, বা আপনার কন্ট্রোলারে আরও কাস্টমাইজেশন করতে সক্ষম হতে চান তবে এই বিকল্পটি একটি ভাল। একটি ফরএভার লুপ ব্যবহার করা আপনার কন্ট্রোলারের জন্য কাস্টম কোড তৈরি করার জন্য একটি দুর্দান্ত ভূমিকা।

এই বিকল্পটি কন্ট্রোলার এবং এর সাথে সম্পর্কিত বোতামগুলির সমস্ত শর্ত একটি চিরকালের লুপে রাখে। এটি আরও নমনীয়তা প্রদান করে, বিশেষ করে কাস্টম বিল্ড ডিজাইনের সাথে, তবে কিছু কোডিং অভিজ্ঞতাও প্রয়োজন। এই বিকল্পটি ব্যবহার করার সময় একটি বিবেচনা, আপনার প্রকল্পের দৈর্ঘ্য এবং জটিলতা। যত বেশি শর্ত যোগ করা হবে, কোড স্ট্যাক তত দীর্ঘ হতে পারে। এর মানে হল যে একাধিক ব্লকগুলিকে ক্রমানুসারে কার্যকর করতে হবে, এবং যখন অনেকগুলি ব্লক থাকে, এটি প্রকল্প বাস্তবায়নকে ধীর করে দিতে পারে। ধীরগতির প্রজেক্ট এক্সিকিউশন কন্ট্রোলার বোতাম টিপে এবং রোবট আচরণ দেখার মধ্যে একটি ব্যবধান তৈরি করতে পারে।

নীচে দেখানো নির্দিষ্ট উদাহরণটি হল একটি উপায় যে আপনি একটি কাস্টম ডিজাইনের রোবট (যেমন একটি কাস্টম ড্রাইভট্রেন সহ একটি রোবট) সহ একটি ফরএভার লুপ ব্যবহার করে রোবটটি চালাতে পারেন এবং বস্তুর সাথে যোগাযোগ করার জন্য নখর এবং বাহুকে ম্যানিপুলেট করতে পারেন৷

VEXcode V5 ওয়ার্কস্পেসে অপশন ২ ব্লক প্রজেক্টটি খোলা আছে। প্রকল্পটিতে ব্লকের একটি স্তূপ এবং কনফিগার করা ডিভাইস রয়েছে। পাশে ডিভাইসেস মেনুটি খোলে এবং এতে নিম্নলিখিত ডিভাইসগুলির তালিকা দেখা যায়: কন্ট্রোলার১, পোর্ট ৩-এর ক্ল-মোটর, পোর্ট ৮-এর আর্ম-মোটর, পোর্ট ১-এর লেফট-মোটর এবং পোর্ট ১০-এর রাইট-মোটর। ওয়ার্কস্পেসে কন্ট্রোলার ইনপুট পরিচালনা করার জন্য ব্লকগুলোর একটি স্ট্যাক রয়েছে। স্ট্যাকটিতে লেখা আছে, চালু করার সময়, ArmMotor বন্ধ হওয়াকে 'হোল্ড' (hold) এ সেট করুন এবং ClawMotor বন্ধ হওয়াকে 'হোল্ড' (hold) এ সেট করুন। স্ট্যাকের বাকি অংশ একটি Forever লুপের মধ্যে থাকে। এতে লেখা আছে: চিরকালের জন্য, বাম মোটরের বেগ কন্ট্রোলার১-এর ৩ নং পজিশন %-এ সেট করুন, বাম মোটরটিকে সামনের দিকে ঘোরান, ডান মোটরের বেগ কন্ট্রোলার১-এর ২ নং পজিশন %-এ সেট করুন, এবং ডান মোটরটিকে সামনের দিকে ঘোরান। এরপর, যদি কন্ট্রোলার১ আপ (Controller1 Up) চাপা হয় তাহলে আর্মমোটর (ArmMotor) উপরের দিকে ঘোরান, অন্যথায় যদি কন্ট্রোলার১ ডাউন (Controller1 Down) চাপা হয় তাহলে আর্মমোটর (ArmMotor) নিচের দিকে ঘোরান, না হলে আর্মমোটর (ArmMotor) থামিয়ে দিন। সবশেষে, যদি কন্ট্রোলার১ A চাপানো হয় তাহলে স্পিন ক্ল মোটরটি চালু হবে, অন্যথায় যদি কন্ট্রোলার১ B চাপানো হয় তাহলে স্পিন ক্ল মোটরটি বন্ধ হবে, এবং অন্যথায় ক্ল মোটরটি থেমে যাবে।

"বিকল্প 2" VEXcode V5 প্রকল্প ফাইল >ডাউনলোড করুন

বিকল্প 2 কোডের ব্যাখ্যা।

কোড পিস ব্যাখ্যা
অপশন ২ VEXcode V5 প্রোজেক্টের ব্লক স্তূপের ক্লোজআপ। দুটি ব্লক হাইলাইট করা আছে এবং সেগুলো স্ট্যাকের 'Forever' লুপের বাইরে অবস্থিত। সেগুলোতে লেখা আছে 'set ArmMotor stopping to hold' এবং 'set ClawMotor stopping to hold'। এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে।
অপশন ২ VEXcode V5 প্রোজেক্টের ব্লক স্তূপের ক্লোজআপ। স্ট্যাকের Forever লুপের ভিতরে চারটি ব্লক হাইলাইট করা হয়েছে। তারা 'Forever' পড়ে, LeftMotor-এর বেগ Controller1-এর 3 নম্বর পজিশনে সেট করে, LeftMotor-টিকে সামনের দিকে ঘোরায়, RightMotor-এর বেগ Controller1-এর 2 নম্বর পজিশনে সেট করে এবং RightMotor-টিকে সামনের দিকে ঘোরায়।

 

V5 কন্ট্রোলারের বাটন লেআউট দেখার জন্য।

এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে।

কন্ট্রোলারে কোন বোতামগুলি চাপা হচ্ছে তা ক্রমাগত পরীক্ষা করার জন্য একটি ফরএভার লুপ ব্যবহার করা হয়।

2 এবং 3 অক্ষ বরাবর বর্তমান কন্ট্রোলারের অবস্থানে মোটর বেগ সেট করতে [সেট মোটর বেগ] ব্লকগুলি ব্যবহার করা হয়। এটি ড্রাইভে গাড়ি সেট করার সমতুল্য। এটি অগত্যা গাড়িকে সরাতে পারে না, এটি কেবল এটি সেট করে।

প্রতিটি জয়স্টিক অক্ষ -100 থেকে +100 এর মধ্যে একটি মান প্রদান করে এবং কেন্দ্রীভূত হলে শূন্যের একটি মান প্রদান করে। এর মানে হল যে জয়স্টিক অক্ষগুলি, যখন ধাক্কা দেওয়া হয়, তখন -100% থেকে 100% সমান হয়। 100 বা -100 এর দিকে অক্ষগুলি যত দূরে ঠেলে দেওয়া হবে, মোটর তত দ্রুত ঘুরবে।

[স্পিন] ব্লকটি আসলে মোটর সরানোর জন্য ব্যবহৃত হয়। এটি একবার দিকনির্দেশ করা হয়ে গেলে গাড়িতে গ্যাস চাপার সমতুল্য। এটি প্রতিটি মোটরকে চারটি কন্ট্রোলার অক্ষের একটি দ্বারা নিয়ন্ত্রিত করার অনুমতি দেয়। 

অপশন ২ VEXcode V5 প্রোজেক্টের ব্লক স্তূপের ক্লোজআপ। স্ট্যাকের Forever লুপের ভিতরে একটি if, else if, else ব্লক হাইলাইট করা হয়েছে। এর মানে হলো, যদি কন্ট্রোলার১ আপ (Controller1 Up) চাপা হয় তাহলে আর্মমোটর (ArmMotor) উপরে ঘুরবে, অন্যথায় যদি কন্ট্রোলার১ ডাউন (Controller1 Down) চাপা হয় তাহলে আর্মমোটর নিচে ঘুরবে, এবং অন্যথায় আর্মমোটর থেমে যাবে।

 

এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে।

[If then else if then else] ব্লকটি কন্ট্রোলারে চাপানো বা ছেড়ে দেওয়া বোতামগুলিতে নির্দিষ্ট আচরণের ম্যাপ করতে ব্যবহৃত হয়। কোডের এই বিভাগে, শর্তগুলি সেট করা হয় যদি উপরে বা নীচের বোতামগুলি চাপানো হয়। যদি তাই হয়, কিছু আচরণ ঘটবে, যেমন বাহু উঠানো এবং নামানো। শর্তের অন্য অংশও রয়েছে, যদি কোনো বোতাম না চাপা হয়, তাহলে হাতটি নড়াচড়া বন্ধ করতে সেট করা হয়।

নোট করুন ক্লো প্রকল্পের কোডের নিম্নলিখিত বিভাগটি একই ব্যাখ্যা অনুসরণ করে।

বিকল্প 2 এর সারাংশ: একটি চিরকালের লুপ ব্যবহার করা

সুবিধা সীমাবদ্ধতা উদাহরণ পরিস্থিতি
  • কাস্টম বিল্ড, বিশেষ করে 4 টির বেশি মোটর সহ ড্রাইভট্রেন মিটমাট করতে পারে
  • একটি একক বোতামে একাধিক আচরণ বরাদ্দ করতে পারে
  • কন্ট্রোলারে বিভিন্ন অক্ষে আচরণ বরাদ্দ করতে পারে (ডিভাইস কনফিগারেশনে বাম আর্কেড, ডান আর্কেড, স্প্লিট আর্কেড এবং ট্যাঙ্ক ড্রাইভের একমাত্র বিকল্পের বিপরীতে)
  • কিছু পরিমাণ কোডিং জ্ঞান প্রয়োজন (শর্ত, লুপ, এবং কন্ট্রোলারের বোতাম/জয়স্টিকের জ্ঞান)
  • ধীর প্রজেক্ট এক্সিকিউশনের জন্য সম্ভাব্য, বা বোতামের প্রতিক্রিয়া সময় পিছিয়ে। যেহেতু সমস্ত কমান্ড একটি একক ফরএভার লুপের মধ্যে থাকে, তাই সেট করা শর্ত এবং কোডের দৈর্ঘ্যের উপর নির্ভর করে কোড এক্সিকিউশন ধীরে ধীরে চলতে পারে।
  • একটি কাস্টম বিল্ট রোবট সহ কন্ট্রোলার ব্যবহার করা, বিশেষ করে একটি অ-মানক ড্রাইভট্রেনের সাথে
  • যখন একটি একক বোতামে একাধিক আচরণ বরাদ্দ করতে চান। উদাহরণস্বরূপ, যখন আপ বোতামটি চাপানো হয়, তখন ক্লো খুলতে পারে, এগিয়ে যেতে পারে এবং তারপরে একটি বস্তুর চারপাশে বন্ধ করতে পারে।

বিকল্প 3: ইভেন্ট ব্যবহার করা

আপনি যদি আপনার কন্ট্রোলারে অনেক কাস্টমাইজেশন চান, ইভেন্টগুলি ব্যবহার করা আপনার জন্য সেরা বিকল্প। একটি বোতাম প্রেস একাধিক রোবট আচরণকে ট্রিগার করতে পারে, যেমন নখর খোলার জন্য একটি বোতাম টিপে, হাত বাড়াতে এবং একটি নির্দিষ্ট দূরত্বের জন্য এগিয়ে যান। একটি ফরএভার লুপের মধ্যে প্রতি বোতামে একাধিক আচরণ কোড করার চেষ্টা করার ফলে প্রকল্প বাস্তবায়ন নাটকীয়ভাবে ধীর হয়ে যাবে - ইভেন্ট ব্যবহার করে আপনি এটি আরও কার্যকরভাবে করতে পারবেন।

এই বিকল্পটি প্রকল্পের প্রবাহ ভাঙতে ইভেন্ট ব্যবহার করে। এটি একটি ফরএভার লুপ ব্যবহারের অনুরূপ, তবে কোডটিকে আরও সংগঠিত করার অনুমতি দেয়, যাতে বোতাম কার্যকর করার দ্রুত প্রতিক্রিয়া সময় থাকে। দ্রুত প্রতিক্রিয়ার সময় মানে আপনি কন্ট্রোলার বোতাম টিপতে এবং রোবটের আচরণ দেখার মধ্যে কোনো ব্যবধান দেখতে পাবেন না। এই উদাহরণটি পূর্ববর্তী প্রকল্পের মতো একই আচরণ দেখায়, তবে ফরএভার লুপের পরিবর্তে ইভেন্টগুলি ব্যবহার করে করা হয়েছে৷

VEXcode EXP ওয়ার্কস্পেসে অপশন ৩ ব্লক প্রজেক্টটি খোলা আছে। প্রকল্পটিতে ১১টি ছোট ব্লকের স্তূপ এবং কনফিগার করা ডিভাইস রয়েছে। পাশে ডিভাইসেস মেনুটি খোলে এবং এতে নিম্নলিখিত ডিভাইসগুলির তালিকা দেখা যায়: কন্ট্রোলার১, পোর্ট ৩-এর ক্ল-মোটর, পোর্ট ৮-এর আর্ম-মোটর, পোর্ট ১-এর লেফট-মোটর এবং পোর্ট ১০-এর রাইট-মোটর। ওয়ার্কস্পেসটিতে ১১টি ছোট ব্লকের স্তূপ রয়েছে, যেগুলো কন্ট্রোলারের ইনপুট পরিচালনা করে। প্রথম স্ট্যাকে লেখা আছে, চালু করার সময়, ArmMotor বন্ধ হওয়াকে 'হোল্ড' (hold) এ সেট করুন এবং তারপর ClawMotor বন্ধ হওয়াকে 'হোল্ড' (hold) এ সেট করুন। দ্বিতীয় স্ট্যাকটিতে লেখা আছে: যখন কন্ট্রোলার১-এর ৩ নং অক্ষ পরিবর্তন করা হয়, তখন লেফটমোটরের বেগ কন্ট্রোলার১-এর ৩ নং অবস্থানের %-এ সেট করুন এবং তারপর লেফটমোটরটিকে সামনের দিকে ঘোরান। তৃতীয় স্ট্যাকটিতে লেখা আছে: যখন কন্ট্রোলার১-এর ২ নং অক্ষ পরিবর্তন করা হয়, তখন রাইটমোটরের বেগ কন্ট্রোলার১-এর ২ নং অবস্থানের %-এ সেট করুন এবং তারপর রাইটমোটরটিকে সামনের দিকে ঘোরান। চতুর্থ স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর আপ বাটন চাপানো হয়, তখন আর্মমোটরটি উপরের দিকে ঘোরান। পঞ্চম স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর আপ বাটনটি ছেড়ে দেওয়া হবে, তখন আর্মমোটর বন্ধ করুন। ষষ্ঠ স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর ডাউন বাটন চাপা হবে, তখন আর্মমোটরটি নিচের দিকে ঘোরান। সপ্তম স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর ডাউন বাটনটি ছেড়ে দেওয়া হবে, তখন আর্মমোটর বন্ধ করুন। অষ্টম স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর বাটন A চাপানো হয়, তখন ক্ল-মোটরটি ঘুরিয়ে খোলা হয়। নবম স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর বাটন A ছেড়ে দেওয়া হবে, ক্ল-মোটর বন্ধ করুন। দশম স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর বাটন B চাপানো হয়, তখন ক্ল-মোটরটি ঘুরিয়ে বন্ধ করুন। একাদশ এবং চূড়ান্ত স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর বাটন B ছেড়ে দেওয়া হবে, তখন ক্ল-মোটর বন্ধ করুন।

"বিকল্প 3" VEXcode V5 প্রকল্প ফাইল >ডাউনলোড করুন

বিকল্প 3 কোডের ব্যাখ্যা।

কোড পিস ব্যাখ্যা
অপশন ৩ VEXcode V5 প্রজেক্টের একটি ব্লক স্ট্যাকের ক্লোজআপ। স্ট্যাকটিতে লেখা আছে, চালু করার সময়, ArmMotor বন্ধ হওয়াকে 'হোল্ড' (hold) এ সেট করুন এবং তারপর ClawMotor বন্ধ হওয়াকে 'হোল্ড' (hold) এ সেট করুন।
এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে।
অপশন ৩ VEXcode V5 প্রোজেক্টের দুটি ব্লকের স্তূপের ক্লোজআপ। প্রথম স্ট্যাকটিতে লেখা আছে: যখন কন্ট্রোলার১-এর ৩ নং অক্ষ পরিবর্তন করা হয়, তখন লেফটমোটরের বেগ কন্ট্রোলার১-এর ৩ নং অবস্থানের %-এ সেট করুন এবং তারপর লেফটমোটরটিকে সামনের দিকে ঘোরান। দ্বিতীয় স্ট্যাকটিতে লেখা আছে: যখন কন্ট্রোলার১-এর ২ নং অক্ষ পরিবর্তন করা হয়, তখন রাইটমোটরের বেগ কন্ট্রোলার১-এর ২ নং অবস্থানের %-এ সেট করুন এবং তারপর রাইটমোটরটিকে সামনের দিকে ঘোরান।

 

V5 কন্ট্রোলারের বাটন লেআউট দেখার জন্য।

এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে।

{When controller axis} ইভেন্ট ব্লকগুলি নির্দিষ্ট আচরণকে ট্রিগার করতে ব্যবহৃত হয় যখন কন্ট্রোলারের চারটি অক্ষের মধ্যে একটি জয়স্টিক ব্যবহার করে পরিবর্তন করা হয়।

A এবং D অক্ষ বরাবর বর্তমান কন্ট্রোলারের অবস্থানে মোটর বেগ সেট করতে [সেট মোটর বেগ] ব্লক ব্যবহার করা হয়। এটি ড্রাইভে গাড়ি সেট করার সমতুল্য। এটি অগত্যা গাড়িকে সরাতে পারে না, এটি কেবল এটি সেট করে।

প্রতিটি জয়স্টিক অক্ষ -100 থেকে +100 এর মধ্যে একটি মান প্রদান করে এবং কেন্দ্রীভূত হলে শূন্যের একটি মান প্রদান করে। এর মানে হল যে জয়স্টিক অক্ষগুলি, যখন ধাক্কা দেওয়া হয়, তখন -100% থেকে 100% সমান হয়। 100 বা -100 এর দিকে অক্ষগুলি যত দূরে ঠেলে দেওয়া হবে, মোটর তত দ্রুত ঘুরবে।

[স্পিন] ব্লকটি আসলে মোটর সরানোর জন্য ব্যবহৃত হয়। এটি একবার দিকনির্দেশ করা হয়ে গেলে গাড়িতে গ্যাস চাপার সমতুল্য। এটি প্রতিটি মোটরকে চারটি কন্ট্রোলার অক্ষের একটি দ্বারা নিয়ন্ত্রিত করার অনুমতি দেয়। 

অপশন ৩ VEXcode V5 প্রোজেক্টের চারটি ব্লকের স্তূপের ক্লোজআপ। প্রথম স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর আপ বাটন চাপানো হয়, তখন আর্মমোটরটি উপরের দিকে ঘোরান। দ্বিতীয় স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর আপ বাটনটি ছেড়ে দেওয়া হবে, তখন আর্মমোটর বন্ধ করুন। তৃতীয় স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর ডাউন বাটন চাপা হবে, তখন আর্মমোটরটি নিচের দিকে ঘোরান। চতুর্থ স্ট্যাকে লেখা আছে: যখন কন্ট্রোলার১-এর ডাউন বাটনটি ছেড়ে দেওয়া হবে, তখন আর্মমোটর বন্ধ করুন।

 

এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে।

{When controller axis} ইভেন্ট ব্লকগুলি কন্ট্রোলারে চাপানো বা ছেড়ে দেওয়া বোতামগুলিতে নির্দিষ্ট আচরণের মানচিত্র করতে ব্যবহৃত হয়। কোডের এই বিভাগে, শর্তগুলি সেট করা হয় যদি উপরে বা নীচের বোতামগুলি চাপানো হয়। যদি তাই হয়, কিছু আচরণ ঘটবে, যেমন বাহু তোলা, নামানো বা থামানো।

নোট করুন ক্লো প্রকল্পের কোডের শেষ বিভাগটি একই ব্যাখ্যা অনুসরণ করে।

বিকল্প 3-এর সারাংশ: ইভেন্ট ব্যবহার করা

সুবিধা সীমাবদ্ধতা উদাহরণ পরিস্থিতি
  • কাস্টম বিল্ড, বিশেষ করে 4 টির বেশি মোটর সহ ড্রাইভট্রেন মিটমাট করতে পারে
  • একটি একক বোতামে একাধিক আচরণ বরাদ্দ করতে পারে
  • কন্ট্রোলারে বিভিন্ন অক্ষে আচরণ বরাদ্দ করতে পারে (ডিভাইস কনফিগারেশনে বাম আর্কেড, ডান আর্কেড, স্প্লিট আর্কেড এবং ট্যাঙ্ক ড্রাইভের একমাত্র বিকল্পের বিপরীতে)
  • দ্রুত কোড এক্সিকিউশন এবং এইভাবে, বোতামের প্রতিক্রিয়াশীলতা (যেমন প্রতিটি শর্ত আলাদাভাবে কল করা হয় এবং কোডের একক স্ট্যাকের মধ্যে এমবেড করা হয় না)
  • বিকল্পগুলির সর্বাধিক কোডিং জ্ঞান প্রয়োজন (শর্ত, লুপ, ইভেন্ট এবং কন্ট্রোলারের বোতাম/জয়স্টিকের জ্ঞান)
  • একটি কাস্টম বিল্ট রোবট সহ কন্ট্রোলার ব্যবহার করা, বিশেষ করে একটি অ-মানক ড্রাইভট্রেনের সাথে
  • যখন কোন ল্যাগ ছাড়াই একটি একক বোতামে একাধিক আচরণ বরাদ্দ করতে চান। উদাহরণস্বরূপ, যখন আপ বোতামটি চাপানো হয়, তখন ক্লো খুলতে পারে, এগিয়ে যেতে পারে এবং তারপরে একটি বস্তুর চারপাশে বন্ধ করতে পারে।

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

Last Updated: