কন্ট্রোলার ব্যবহার করা আপনার রোবটকে একটি টাস্ক সম্পূর্ণ করতে গাড়ি চালানো এবং সরানো সহজ করে তুলতে পারে। যাইহোক, ড্রাইভ প্রোগ্রাম ব্যবহার করার সীমাবদ্ধতা রয়েছে এবং আপনার রোবট তৈরি বা হাতের কাজের উপর নির্ভর করে, আপনি বিভিন্ন নিয়ন্ত্রণ চাইতে পারেন। কন্ট্রোলারের কোডিং আপনাকে কন্ট্রোলারটিকে অপ্টিমাইজ করার অনুমতি দেয় যাতে এটি আপনার রোবট এবং হাতের কাজটি আরও ভালভাবে ফিট করে। VEXcode IQ-তে কন্ট্রোলার কোড করার বিভিন্ন উপায় রয়েছে। প্রতিটিরই সুবিধা এবং সীমাবদ্ধতা রয়েছে এবং কিছু পদ্ধতি পছন্দসই ফলাফলের উপর নির্ভর করে নির্দিষ্ট পরিস্থিতিতে আরও উপযুক্ত।
এই নিবন্ধটি আপনাকে VEXcode IQ-তে কন্ট্রোলারের কাস্টম কোডিং করার জন্য তিনটি ভিন্ন বিকল্পের মাধ্যমে নিয়ে যাবে। প্রতিটি পদ্ধতির সুবিধা, সীমাবদ্ধতা এবং একটি পদ্ধতি বেছে নেওয়ার সময় আপনাকে গাইড করার জন্য একটি উদাহরণ ব্যবহারের ক্ষেত্রে বর্ণনা করা হবে। এই নিবন্ধের উদ্দেশ্যে, দেখানো সমস্ত কোড উদাহরণ Clawbot-এর জন্য তৈরি করা হয়েছে। যাইহোক, একই ধারণা builds.vex.com, এবং কাস্টম বিল্ডে পাওয়া অসংখ্য অন্যান্য বিল্ডে প্রয়োগ করা যেতে পারে।
বিকল্প 1: ডিভাইস কনফিগারেশনে বোতাম বরাদ্দ করা
আপনি যখন বেসবট বা ক্লবট-এর মতো স্ট্যান্ডার্ড বিল্ড ব্যবহার করছেন এবং দ্রুত উঠতে এবং চালাতে চান তখন এই বিকল্পটি দুর্দান্ত।
এই বিকল্পটি আপনাকে ডিভাইস কনফিগারেশনে কন্ট্রোলারের বোতামগুলিতে মোটর, একটি ড্রাইভট্রেন বা মোটর গ্রুপ নির্ধারণ করতে দেয়। ডিভাইস কনফিগারেশনে কন্ট্রোলারে বোতামগুলি কীভাবে বরাদ্দ করা যায় সে সম্পর্কে আরও তথ্যের জন্য, এই নিবন্ধটি দেখুন।
বিকল্প 1 এর সারাংশ: ডিভাইস কনফিগারেশনে বোতাম বরাদ্দ করা
|
সুবিধা |
সীমাবদ্ধতা |
উদাহরণ পরিস্থিতি |
|---|---|---|
|
|
|
বিকল্প 2: একটি ফরএভার লুপ ব্যবহার করা
আপনি যদি স্ট্যান্ডার্ড বিল্ডের পরিবর্তে একটি কাস্টম বিল্ড ব্যবহার করেন, বা আপনার কন্ট্রোলারে আরও কাস্টমাইজেশন করতে সক্ষম হতে চান তবে এই বিকল্পটি একটি ভাল। একটি ফরএভার লুপ ব্যবহার করা আপনার কন্ট্রোলারের জন্য কাস্টম কোড তৈরি করার জন্য একটি দুর্দান্ত ভূমিকা।
এই বিকল্পটি কন্ট্রোলার এবং এর সাথে সম্পর্কিত বোতামগুলির সমস্ত শর্ত একটি চিরকালের লুপে রাখে। এটি আরও নমনীয়তা প্রদান করে, বিশেষ করে কাস্টম বিল্ড ডিজাইনের সাথে, তবে কিছু কোডিং অভিজ্ঞতাও প্রয়োজন। এই বিকল্পটি ব্যবহার করার সময় একটি বিবেচনা, আপনার প্রকল্পের দৈর্ঘ্য এবং জটিলতা। যত বেশি শর্ত যোগ করা হবে, কোড স্ট্যাক তত দীর্ঘ হতে পারে। এর মানে হল যে একাধিক ব্লকগুলিকে ক্রমানুসারে কার্যকর করতে হবে, এবং যখন অনেকগুলি ব্লক থাকে, এটি প্রকল্প বাস্তবায়নকে ধীর করে দিতে পারে। ধীরগতির প্রজেক্ট এক্সিকিউশন কন্ট্রোলার বোতাম টিপে এবং রোবট আচরণ দেখার মধ্যে একটি ব্যবধান তৈরি করতে পারে।
নীচে দেখানো নির্দিষ্ট উদাহরণটি হল একটি উপায় যে আপনি একটি কাস্টম ডিজাইনের রোবট (যেমন একটি কাস্টম ড্রাইভট্রেন সহ একটি রোবট) সহ একটি ফরএভার লুপ ব্যবহার করে রোবটটি চালাতে পারেন এবং বস্তুর সাথে যোগাযোগ করার জন্য নখর এবং বাহুকে ম্যানিপুলেট করতে পারেন৷
"বিকল্প 2" VEXcode IQ (2য় প্রজন্মের) প্রকল্প ফাইল >ডাউনলোড করুন
দ্রষ্টব্য: যদি 1st Gen Clawbot ব্যবহার করা হয় তাহলে উপরের প্রজেক্টের উদ্দেশ্য অনুযায়ী কাজ করার জন্য আর্ম মোটরটিকে ডিভাইস কনফিগারেশনে উল্টাতে হবে।
বিকল্প 2 কোডের ব্যাখ্যা।
|
কোড পিস |
ব্যাখ্যা |
|---|---|
|
এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে। |
|
|
|
এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে। কন্ট্রোলারে কোন বোতামগুলি চাপা হচ্ছে তা ক্রমাগত পরীক্ষা করার জন্য একটি ফরএভার লুপ ব্যবহার করা হয়। A এবং D অক্ষ বরাবর বর্তমান কন্ট্রোলারের অবস্থানে মোটর বেগ সেট করতে [সেট মোটর বেগ] ব্লক ব্যবহার করা হয়। এটি ড্রাইভে গাড়ি সেট করার সমতুল্য। এটি অগত্যা গাড়িকে সরাতে পারে না, এটি কেবল এটি সেট করে। প্রতিটি জয়স্টিক অক্ষ -100 থেকে +100 এর মধ্যে একটি মান প্রদান করে এবং কেন্দ্রীভূত হলে শূন্যের একটি মান প্রদান করে। এর মানে হল যে জয়স্টিক অক্ষগুলি, যখন ধাক্কা দেওয়া হয়, তখন -100% থেকে 100% সমান হয়। 100 বা -100 এর দিকে অক্ষগুলি যত দূরে ঠেলে দেওয়া হবে, মোটর তত দ্রুত ঘুরবে। [স্পিন] ব্লকটি আসলে মোটর সরানোর জন্য ব্যবহৃত হয়। এটি একবার দিকনির্দেশ করা হয়ে গেলে গাড়িতে গ্যাস চাপার সমতুল্য। এটি প্রতিটি মোটরকে চারটি কন্ট্রোলার অক্ষের একটি দ্বারা নিয়ন্ত্রিত করার অনুমতি দেয়। |
|
এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে। [If then else if then else] ব্লকটি কন্ট্রোলারে চাপানো বা ছেড়ে দেওয়া বোতামগুলিতে নির্দিষ্ট আচরণের ম্যাপ করতে ব্যবহৃত হয়। কোডের এই বিভাগে, ই আপ বা ই ডাউন বোতাম টিপলে শর্তগুলি সেট করা হয়। যদি তাই হয়, কিছু আচরণ ঘটবে, যেমন বাহু উঠানো এবং নামানো। শর্তের অন্য অংশও রয়েছে, যদি কোনো বোতাম না চাপা হয়, তাহলে হাতটি নড়াচড়া বন্ধ করতে সেট করা হয়। নোট করুন ক্লো প্রকল্পের কোডের নিম্নলিখিত বিভাগটি একই ব্যাখ্যা অনুসরণ করে। |
বিকল্প 2 এর সারাংশ: একটি চিরকালের লুপ ব্যবহার করা
|
সুবিধা |
সীমাবদ্ধতা |
উদাহরণ পরিস্থিতি |
|---|---|---|
|
|
|
বিকল্প 3: ইভেন্ট ব্যবহার করা
আপনি যদি আপনার কন্ট্রোলারে অনেক কাস্টমাইজেশন চান, ইভেন্টগুলি ব্যবহার করা আপনার জন্য সেরা বিকল্প। একটি বোতাম প্রেস একাধিক রোবট আচরণকে ট্রিগার করতে পারে, যেমন নখর খোলার জন্য একটি বোতাম টিপে, হাত বাড়াতে এবং একটি নির্দিষ্ট দূরত্বের জন্য এগিয়ে যান। একটি ফরএভার লুপের মধ্যে প্রতি বোতামে একাধিক আচরণ কোড করার চেষ্টা করার ফলে প্রকল্প বাস্তবায়ন নাটকীয়ভাবে ধীর হয়ে যাবে - ইভেন্ট ব্যবহার করে আপনি এটি আরও কার্যকরভাবে করতে পারবেন।
এই বিকল্পটি প্রকল্পের প্রবাহ ভাঙতে ইভেন্ট ব্যবহার করে। এটি একটি ফরএভার লুপ ব্যবহারের অনুরূপ, তবে কোডটিকে আরও সংগঠিত করার অনুমতি দেয়, যাতে বোতাম কার্যকর করার দ্রুত প্রতিক্রিয়া সময় থাকে। দ্রুত প্রতিক্রিয়ার সময় মানে আপনি কন্ট্রোলার বোতাম টিপতে এবং রোবটের আচরণ দেখার মধ্যে কোনো ব্যবধান দেখতে পাবেন না। এই উদাহরণটি পূর্ববর্তী প্রকল্পের মতো একই আচরণ দেখায়, তবে ফরএভার লুপের পরিবর্তে ইভেন্টগুলি ব্যবহার করে করা হয়েছে৷
"বিকল্প 3" VEXcode IQ (2য় প্রজন্মের) প্রকল্প ফাইল >ডাউনলোড করুন
দ্রষ্টব্য: যদি 1st Gen Clawbot ব্যবহার করা হয় তাহলে উপরের প্রজেক্টের উদ্দেশ্য অনুযায়ী কাজ করার জন্য আর্ম মোটরটিকে ডিভাইস কনফিগারেশনে বিপরীত করতে হবে।
বিকল্প 3 কোডের ব্যাখ্যা।
|
কোড পিস |
ব্যাখ্যা |
|---|---|
|
এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে। |
|
|
|
এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে। {When controller axis} ইভেন্ট ব্লকগুলি নির্দিষ্ট আচরণকে ট্রিগার করতে ব্যবহৃত হয় যখন কন্ট্রোলারের চারটি অক্ষের মধ্যে একটি জয়স্টিক ব্যবহার করে পরিবর্তন করা হয়। A এবং D অক্ষ বরাবর বর্তমান কন্ট্রোলারের অবস্থানে মোটর বেগ সেট করতে [সেট মোটর বেগ] ব্লক ব্যবহার করা হয়। এটি ড্রাইভে গাড়ি সেট করার সমতুল্য। এটি অগত্যা গাড়িকে সরাতে পারে না, এটি কেবল এটি সেট করে। প্রতিটি জয়স্টিক অক্ষ -100 থেকে +100 এর মধ্যে একটি মান প্রদান করে এবং কেন্দ্রীভূত হলে শূন্যের একটি মান প্রদান করে। এর মানে হল যে জয়স্টিক অক্ষগুলি, যখন ধাক্কা দেওয়া হয়, তখন -100% থেকে 100% সমান হয়। 100 বা -100 এর দিকে অক্ষগুলি যত দূরে ঠেলে দেওয়া হবে, মোটর তত দ্রুত ঘুরবে। [স্পিন] ব্লকটি আসলে মোটর সরানোর জন্য ব্যবহৃত হয়। এটি একবার দিকনির্দেশ করা হয়ে গেলে গাড়িতে গ্যাস চাপার সমতুল্য। এটি প্রতিটি মোটরকে চারটি কন্ট্রোলার অক্ষের একটি দ্বারা নিয়ন্ত্রিত করার অনুমতি দেয়। |
|
এই কোড উদাহরণের জন্য একটি Clawbot ব্যবহার করা হয়েছিল। যখন কন্ট্রোলারের বোতামগুলি বাহুকে বাড়াতে এবং কমানোর জন্য ব্যবহার করা হয়, বোতামটি ছাড়ার সাথে সাথে, অভিকর্ষের কারণে বাহুটি আবার নীচে পড়ে যাবে। হাত এবং নখর উভয়কে "ধরে রাখা" সেট করা নিশ্চিত করবে যে কন্ট্রোলারের বোতামগুলি প্রকাশ করার পরেও বাহু এবং নখর উভয়ই যথাস্থানে থাকবে। {When controller axis} ইভেন্ট ব্লকগুলি কন্ট্রোলারে চাপানো বা ছেড়ে দেওয়া বোতামগুলিতে নির্দিষ্ট আচরণের মানচিত্র করতে ব্যবহৃত হয়। কোডের এই বিভাগে, ই আপ বা ই ডাউন বোতাম টিপলে শর্তগুলি সেট করা হয়। যদি তাই হয়, কিছু আচরণ ঘটবে, যেমন বাহু তোলা, নামানো বা থামানো। নোট করুন ক্লো প্রকল্পের কোডের শেষ বিভাগটি একই ব্যাখ্যা অনুসরণ করে। |
বিকল্প 3-এর সারাংশ: ইভেন্ট ব্যবহার করা
|
সুবিধা |
সীমাবদ্ধতা |
উদাহরণ পরিস্থিতি |
|---|---|---|
|
|
|