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

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

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

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

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

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

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

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

সুবিধা

সীমাবদ্ধতা

উদাহরণ পরিস্থিতি

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

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

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

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

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

অপশন ২ ব্লক প্রকল্প সহ VEXcode EXP ওয়ার্কস্পেস খোলা হয়েছে। প্রকল্পটিতে ব্লকের একটি স্তূপ রয়েছে এবং এতে ডিভাইসগুলি কনফিগার করা হয়েছে। ডিভাইস মেনুটি পাশে খোলা থাকে এবং নিম্নলিখিত ডিভাইসগুলির তালিকা তৈরি করে: পোর্ট 3-এ ArmMotor, পোর্ট 4-এ ClawMotor, কন্ট্রোলার, পোর্ট 6-এ LeftMotor এবং পোর্ট 10-এ RightMotor। সবশেষে কন্ট্রোলার ইনপুট পরিচালনা করার জন্য ব্লকের স্তূপ রয়েছে। স্ট্যাকটি পড়ে আছে শুরু হলে, ArmMotor stopping কে ধরে রাখার জন্য সেট করুন এবং ClawMotor stopping কে ধরে রাখার জন্য সেট করুন। বাকি স্ট্যাকটি একটি ফরএভার লুপে অন্তর্ভুক্ত। এটিতে লেখা আছে "Forever," "LeftMotor velocity কে Controller 3 position % এ সেট করুন, "LeftMotor" কে সামনের দিকে ঘুরান, "RightMotor velocity কে Controller 2 position % এ সেট করুন, এবং "RightMotor" কে সামনের দিকে ঘুরান।" এরপর, যদি কন্ট্রোলার আপ চাপা থাকে তাহলে ArmMotor উপরে ঘোরান, অন্যথায় যদি কন্ট্রোলার E ডাউন চাপা থাকে তাহলে ArmMotor নিচে ঘোরান, অন্যথায় ArmMotor বন্ধ করুন। সবশেষে, যদি Controller A চাপে তাহলে ClawMotor খুলুন, অন্যথায় Controller B চাপলে ClawMotor বন্ধ করুন, এবং অন্যথায় ClawMotor বন্ধ করুন।

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

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

কোড পিস

ব্যাখ্যা

অপশন ২ ভেক্সকোড এক্সপি প্রকল্পের ব্লকের স্ট্যাকের ক্লোজ আপ। দুটি ব্লক হাইলাইট করা হয়েছে এবং স্ট্যাকের ফরএভার লুপের বাইরে রয়েছে, তারা "set ArmMotor stoping to hold" এবং "ClawMotor stoping to hold" সেট করে।

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

অপশন ২ ভেক্সকোড এক্সপি প্রকল্পের ব্লকের স্ট্যাকের ক্লোজ আপ। স্ট্যাকের ফরএভার লুপের ভিতরে চারটি ব্লক হাইলাইট করা হয়েছে। তারা Forever পড়ে, LeftMotor velocity কে Controller 3 position % এ সেট করে, LeftMotor কে সামনের দিকে স্পিন করে, RightMotor velocity কে Controller 2 position % এ সেট করে, এবং RightMotor কে সামনের দিকে স্পিন করে। EXP কন্ট্রোলারের ডায়াগ্রাম, যার বোতাম এবং জয়স্টিক লেবেলযুক্ত। দৃশ্যটি কন্ট্রোলারের সামনের দিক থেকে দেখা যাচ্ছে। বাম জয়স্টিকের অক্ষগুলিকে 3 এবং 4 হিসাবে চিহ্নিত করা হয়েছে। বাম জয়স্টিকের কেন্দ্রের বোতামটি L3 লেবেলযুক্ত। বাম জয়স্টিকের নীচের দুটি গোলাকার বোতামে উপরে এবং নীচে লেবেল করা আছে। ডান জয়স্টিকের অক্ষগুলিকে 1 এবং 2 হিসাবে লেবেল করা হয়েছে। ডান জয়স্টিকের কেন্দ্রের বোতামটি R3 লেবেলযুক্ত। ডান জয়স্টিকের নীচের দুটি গোলাকার বোতাম A এবং B লেবেলযুক্ত।

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

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

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

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

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

অপশন ২ ভেক্সকোড এক্সপি প্রকল্পের ব্লকের স্ট্যাকের ক্লোজ আপ। স্ট্যাকের ফরএভার লুপের ভেতরে একটি if, else if, else ব্লক হাইলাইট করা হয়। এতে লেখা আছে যদি Controller Up চাপা হয় তাহলে ArmMotor উপরে ঘোরান, অন্যথায় Controller Down চাপা হয় তাহলে ArmMotor নিচে ঘোরান, এবং অন্যথায় ArmMotor বন্ধ করুন।

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

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

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

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

সুবিধাদি

সীমাবদ্ধতা

উদাহরণ পরিস্থিতি

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

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

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

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

অপশন ৩ ব্লক প্রকল্প সহ VEXcode EXP ওয়ার্কস্পেস খোলা হয়েছে। প্রকল্পটিতে ১১টি ছোট ব্লকের স্তূপ রয়েছে এবং এতে ডিভাইসগুলি কনফিগার করা হয়েছে। ডিভাইস মেনুটি পাশে খোলা থাকে এবং নিম্নলিখিত ডিভাইসগুলির তালিকা তৈরি করে: পোর্ট 3-এ ArmMotor, পোর্ট 4-এ ClawMotor, কন্ট্রোলার, পোর্ট 6-এ LeftMotor এবং পোর্ট 10-এ RightMotor। সবশেষে ১১টি ছোট ব্লকের স্ট্যাক রয়েছে যা কন্ট্রোলার ইনপুট পরিচালনা করে। প্রথম স্ট্যাকে লেখা আছে When started, ArmMotor stopping কে ধরে রাখার জন্য সেট করুন এবং তারপর ClawMotor stopping কে ধরে রাখার জন্য সেট করুন। দ্বিতীয় স্ট্যাকে লেখা আছে যখন কন্ট্রোলার অক্ষ 3 পরিবর্তন করা হয়, তখন LeftMotor বেগকে Controller 3 position % এ সেট করুন এবং তারপর LeftMotor কে সামনের দিকে ঘুরান। তৃতীয় স্ট্যাকে লেখা আছে যখন কন্ট্রোলার অক্ষ 2 পরিবর্তন করা হয়, তখন RightMotor বেগকে Controller 2 অবস্থান % এ সেট করুন এবং তারপর RightMotor কে সামনের দিকে ঘুরান। চতুর্থ স্ট্যাকে লেখা আছে "When Controller button Up pressed, ArmMotor up spin"। পঞ্চম স্ট্যাকে লেখা আছে যখন কন্ট্রোলার বোতামটি উপরে ছেড়ে দেওয়া হয়, তখন ArmMotor বন্ধ করুন। ষষ্ঠ স্ট্যাকে লেখা আছে "কন্ট্রোলার বোতাম নিচে চাপলে, ArmMotor নিচে ঘুরিয়ে দিন।" সপ্তম স্ট্যাকে লেখা আছে যখন কন্ট্রোলার বোতাম ডাউন রিলিজ হবে, ArmMotor বন্ধ করুন। অষ্টম স্ট্যাকটিতে লেখা আছে যখন কন্ট্রোলার বোতাম A চাপা হবে, তখন ClawMotor খুলবে। নবম স্ট্যাকে লেখা আছে যখন কন্ট্রোলার বোতাম A রিলিজ হবে, ClawMotor বন্ধ করুন। দশম স্ট্যাকটি পড়ে "কন্ট্রোলার বোতাম B" টিপলে, ClawMotor বন্ধ করুন। একাদশ এবং শেষ স্ট্যাকে লেখা আছে "কন্ট্রোলার বোতাম B" ছেড়ে দিলে, ClawMotor বন্ধ করুন।

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

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

কোড পিস

ব্যাখ্যা

অপশন ৩ ভেক্সকোড এক্সপি প্রকল্পের ব্লকের একটি স্ট্যাকের ক্লোজ আপ। স্ট্যাকটি পড়ে আছে শুরু হলে, ArmMotor stopping কে ধরে রাখার জন্য সেট করুন এবং তারপর ClawMotor stopping কে ধরে রাখার জন্য সেট করুন।

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

অপশন ৩ ভেক্সকোড এক্সপি প্রকল্পের দুটি ব্লকের স্ট্যাকের ক্লোজ আপ। প্রথম স্ট্যাকে লেখা আছে যখন কন্ট্রোলার অক্ষ 3 পরিবর্তন করা হয়, তখন বাম মোটর বেগকে কন্ট্রোলার 3 অবস্থান % এ সেট করুন এবং তারপর বাম মোটরকে সামনের দিকে ঘুরান। দ্বিতীয় স্ট্যাকে লেখা আছে যখন কন্ট্রোলার অক্ষ 2 পরিবর্তন করা হয়, তখন RightMotor বেগকে Controller 2 position % এ সেট করুন এবং তারপর RightMotor কে সামনের দিকে ঘুরান। EXP কন্ট্রোলারের ডায়াগ্রাম, যার বোতাম এবং জয়স্টিক লেবেলযুক্ত। দৃশ্যটি কন্ট্রোলারের সামনের দিক থেকে দেখা যাচ্ছে। বাম জয়স্টিকের অক্ষগুলিকে 3 এবং 4 হিসাবে চিহ্নিত করা হয়েছে। বাম জয়স্টিকের কেন্দ্রের বোতামটি L3 লেবেলযুক্ত। বাম জয়স্টিকের নীচের দুটি গোলাকার বোতামে উপরে এবং নীচে লেবেল করা আছে। ডান জয়স্টিকের অক্ষগুলিকে 1 এবং 2 হিসাবে লেবেল করা হয়েছে। ডান জয়স্টিকের কেন্দ্রের বোতামটি R3 লেবেলযুক্ত। ডান জয়স্টিকের নীচের দুটি গোলাকার বোতাম A এবং B লেবেলযুক্ত।

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

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

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

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

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

অপশন ৩ ভেক্সকোড এক্সপি প্রকল্পের চারটি ব্লকের ক্লোজ আপ। প্রথম স্ট্যাকে লেখা আছে "When Controller button Up pressed, ArmMotor up spin"। দ্বিতীয় স্ট্যাকে লেখা আছে "কন্ট্রোলার বোতামটি উপরে ছেড়ে দিলে, ArmMotor বন্ধ করো।" তৃতীয় স্ট্যাকে লেখা আছে "কন্ট্রোলার বোতাম নিচে চাপলে, ArmMotor নিচে ঘুরিয়ে দিন।" চতুর্থ স্ট্যাকে লেখা আছে যখন কন্ট্রোলার বোতাম ডাউন রিলিজ হবে, তখন ArmMotor বন্ধ করুন।

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

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

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

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

সুবিধাদি

সীমাবদ্ধতা

উদাহরণ পরিস্থিতি

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

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

Last Updated: