নিয়ন্ত্রক#

ভূমিকা#

VEX IQ (২য় প্রজন্ম) কন্ট্রোলারে বাটন এবং দুটি জয়স্টিক রয়েছে। বাটন চাপা হয়েছে কিনা তা পরীক্ষা করতে, জয়স্টিকের নড়াচড়া পড়তে, কনফিগার করা কন্ট্রোলার অ্যাকশন চালু বা বন্ধ করতে, অথবা কন্ট্রোলার ইভেন্ট ঘটলে ফাংশন চালাতে কন্ট্রোলার মেথড ব্যবহার করা যায়।

IQ (২য় জেনারেশন) ব্রেইনটি একটি IQ (২য় জেনারেশন) অথবা IQ (১ম জেনারেশন) কন্ট্রোলারের সাথে সংযুক্ত হতে পারে। একটি IQ (১ম জেনারেশন) কন্ট্রোলারে অবশ্যই একটি নীল স্মার্ট রেডিও ইনস্টল করা থাকতে হবে।

কনফিগার করা কন্ট্রোলার অ্যাকশনগুলি হলো ডিভাইসেস মেনুতে সেট করা কন্ট্রোলারের আচরণ। একটি প্রোজেক্ট চলাকালীন সেই কনফিগার করা অ্যাকশনগুলিকে সাময়িকভাবে চালু বা বন্ধ করতে remote_control_code_enabled ব্যবহার করুন।

এই পৃষ্ঠায় উদাহরণ হিসেবে কন্ট্রোলারের নাম হিসেবে controller ব্যবহার করা হয়েছে। প্রয়োজন অনুযায়ী এটিকে আপনার নিজের কনফিগার করা নাম দিয়ে প্রতিস্থাপন করুন।

নিম্নে সকল উপলব্ধ পদ্ধতির একটি তালিকা দেওয়া হলো:

ক্রিয়া — কনফিগার করা কন্ট্রোলার ক্রিয়াকলাপগুলি চালু বা বন্ধ করুন।

  • remote_control_code_enabled — ডিভাইসেস মেনুতে কনফিগার করা কন্ট্রোলার অ্যাকশনগুলি সক্ষম বা অক্ষম করে।

গেটার — বাটনের অবস্থা এবং জয়স্টিকের অবস্থান পড়ে।

  • .pressing — নির্দিষ্ট বোতামটি চাপা হচ্ছে কিনা তা ফেরত দেয়।

  • .position — একটি নির্দিষ্ট জয়স্টিক অক্ষের অবস্থান ফেরত দেয়।

কলব্যাক — কন্ট্রোলারের ইনপুট পরিবর্তিত হলে ফাংশনগুলো চালায়।

  • .pressed — নির্দিষ্ট বোতাম চাপলে একটি ফাংশন চলে।

  • .released — নির্দিষ্ট বাটনটি ছেড়ে দিলে একটি ফাংশন চলে।

  • .changed — যখন জয়স্টিকের অবস্থান একটি নির্দিষ্ট অক্ষ বরাবর পরিবর্তিত হয় তখন একটি ফাংশন রান করে।

কনস্ট্রাক্টর — ম্যানুয়ালি একটি কন্ট্রোলার অবজেক্ট তৈরি করুন।

  • Controller — একটি কন্ট্রোলার অবজেক্ট তৈরি করে।

পদক্ষেপ#

remote_control_code_enabled#

remote_control_code_enabled হলো একটি ভ্যারিয়েবল যা ডিভাইসেস মেনুতে কনফিগার করা কন্ট্রোলার অ্যাকশনগুলো চালু বা বন্ধ করে। কন্ট্রোলারে কনফিগার করা অ্যাকশনগুলো ডিফল্টরূপে চালু থাকে।

Usage:
remote_control_code_enabled = state

মূল্য

বর্ণনা

True

কন্ট্রোলার দ্বারা কনফিগার করা ক্রিয়াকলাপগুলি সক্ষম করে।

False

কন্ট্রোলার দ্বারা কনফিগার করা ক্রিয়াকলাপগুলি নিষ্ক্রিয় করে।

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

গেটার্স#

.pressing#

.pressing কন্ট্রোলারের কোনো নির্দিষ্ট বাটন বর্তমানে চাপা আছে কিনা তা ফেরত দেয়। এই মেথডটি অবশ্যই একটি নির্দিষ্ট বাটন অবজেক্টে কল করতে হবে, যেমন controller.buttonEUp.

  • True — নির্দিষ্ট বাটনটি চাপা হচ্ছে।

  • False — নির্দিষ্ট বোতামটি চাপা হচ্ছে না।

ব্যবহার: এই পদ্ধতির সাথে উপলব্ধ বাটন অবজেক্টগুলোর মধ্যে
একটি ব্যবহার করা যেতে পারে:

IQ 2nd gen কন্ট্রোলারের সামনের এবং পিছনের দিকের দৃশ্য যেখানে সমস্ত বোতাম হলুদ রঙে হাইলাইট করা হয়েছে। কন্ট্রোলারের উপরিভাগে উপরের বাম এবং ডান কোণে দুটি জয়স্টিক বোতাম রয়েছে, বাম জয়স্টিকের নিচে E আপ এবং ডাউন এবং ডান জয়স্টিকের নিচে F আপ এবং ডাউন। কন্ট্রোলারের পিছনে যথাক্রমে বাম এবং ডান দিকে L আপ এবং ডাউন এবং R আপ এবং ডাউন বোতাম রয়েছে।

বোতাম

আদেশ

buttonEDown

controller.buttonEDown.pressing() — E ▼ বাটন

buttonEUp

controller.buttonEUp.pressing() — E ▲ বাটন

buttonFDown

controller.buttonFDown.pressing() — F ▼ বাটন

buttonFUp

controller.buttonFUp.pressing() — F ▲ বাটন

buttonL3

controller.buttonL3.pressing() — বাম জয়স্টিক বাটন, শুধুমাত্র IQ (২য় প্রজন্ম) কন্ট্রোলারের জন্য

buttonLDown

controller.buttonLDown.pressing() — L ▼ বাটন

buttonLUp

controller.buttonLUp.pressing() — L ▲ বাটন

buttonR3

controller.buttonR3.pressing() — ডান জয়স্টিক বাটন, শুধুমাত্র IQ (২য় প্রজন্ম) কন্ট্রোলারের জন্য

buttonRDown

controller.buttonRDown.pressing() — R ▼ বাটন

buttonRUp

controller.buttonRUp.pressing() — R ▲ বাটন

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

# Turn right while E Up is held
while True:
    if controller.buttonEUp.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position একটি জয়স্টিক অ্যাক্সিসের অবস্থানকে -100 থেকে 100 পর্যন্ত একটি সংখ্যা হিসাবে ফেরত দেয়।

এই মেথডটি একটি নির্দিষ্ট অ্যাক্সিস অবজেক্টে কল করতে হবে, যেমন controller.axisA।

ব্যবহার:
এই পদ্ধতির সাথে উপলব্ধ অক্ষ বস্তুগুলোর মধ্যে একটি ব্যবহার করা যেতে পারে:

IQ 2nd gen কন্ট্রোলার, যার চারটি জয়স্টিক অ্যাক্সিস হাইলাইট করা আছে। বাম জয়স্টিকে, অ্যাক্সিস A হলো উল্লম্ব এবং অ্যাক্সিস B হলো অনুভূমিক। ডান জয়স্টিকে, অ্যাক্সিস C হলো অনুভূমিক এবং অ্যাক্সিস D হলো উল্লম্ব।

অক্ষ

আদেশ

axisA

controller.axisA.position() — বাম জয়স্টিকের উল্লম্ব অক্ষ

axisB

controller.axisB.position() — বাম জয়স্টিকের অনুভূমিক অক্ষ

axisC

controller.axisC.position() — ডান জয়স্টিকের অনুভূমিক অক্ষ

axisD

controller.axisD.position() — ডান জয়স্টিকের উল্লম্ব অক্ষ

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axisB.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axisB.position() < -10:
        drivetrain.turn(LEFT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

কলব্যাক#

.pressed#

.pressed নির্দিষ্ট বাটনটি চাপলে একটি ফাংশন চালু করে। একবার ব্যবহার করা হলে, প্রতিবার বাটনটি চাপলে ফাংশনটি স্বয়ংক্রিয়ভাবে চালু হবে।

ব্যবহার: এই পদ্ধতির সাথে উপলব্ধ বাটন অবজেক্টগুলোর মধ্যে
একটি ব্যবহার করা যেতে পারে:

IQ 2nd gen কন্ট্রোলারের সামনের এবং পিছনের দিকের দৃশ্য যেখানে সমস্ত বোতাম হলুদ রঙে হাইলাইট করা হয়েছে। কন্ট্রোলারের উপরিভাগে উপরের বাম এবং ডান কোণে দুটি জয়স্টিক বোতাম রয়েছে, বাম জয়স্টিকের নিচে E আপ এবং ডাউন এবং ডান জয়স্টিকের নিচে F আপ এবং ডাউন। কন্ট্রোলারের পিছনে যথাক্রমে বাম এবং ডান দিকে L আপ এবং ডাউন এবং R আপ এবং ডাউন বোতাম রয়েছে।

বোতাম

আদেশ

buttonEDown

controller.buttonEDown.pressed(callback, arg) — E ▼ বাটন

buttonEUp

controller.buttonEUp.pressed(callback, arg) — E ▲ বাটন

buttonFDown

controller.buttonFDown.pressed(callback, arg) — F ▼ বাটন

buttonFUp

controller.buttonFUp.pressed(callback, arg) — F ▲ বাটন

buttonL3

controller.buttonL3.pressed(callback, arg) — বাম জয়স্টিক বাটন, শুধুমাত্র IQ (২য় প্রজন্ম) কন্ট্রোলারের জন্য

buttonLDown

controller.buttonLDown.pressed(callback, arg) — L ▼ বাটন

buttonLUp

controller.buttonLUp.pressed(callback, arg) — L ▲ বাটন

buttonR3

controller.buttonR3.pressed(callback, arg) — ডান জয়স্টিক বাটন, শুধুমাত্র IQ (২য় প্রজন্ম) কন্ট্রোলারের জন্য

buttonRDown

controller.buttonRDown.pressed(callback, arg) — R ▼ বাটন

buttonRUp

controller.buttonRUp.pressed(callback, arg) — R ▲ বাটন

প্যারামিটার

বর্ণনা

callback

নির্দিষ্ট বাটনটি প্রতিবার চাপলে চলার জন্য পূর্বে সংজ্ঞায়িত একটি ফাংশন।

arg

ঐচ্ছিক। কলব্যাক ফাংশনে পাস করার জন্য আর্গুমেন্ট ধারণকারী একটি টাপল। আরও তথ্যের জন্য প্যারামিটার সহ ইভেন্টের ব্যবহার দেখুন।

# Drive forward when E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.pressed(drive_forward)

.released#

.released নির্দিষ্ট বাটনটি ছেড়ে দিলে একটি ফাংশন চালায়। একবার এটি ব্যবহার করা হলে, প্রতিবার বাটনটি ছেড়ে দিলে ফাংশনটি স্বয়ংক্রিয়ভাবে চলবে।

ব্যবহার: এই পদ্ধতির সাথে উপলব্ধ বাটন অবজেক্টগুলোর মধ্যে
একটি ব্যবহার করা যেতে পারে:

IQ 2nd gen কন্ট্রোলারের সামনের এবং পিছনের দিকের দৃশ্য যেখানে সমস্ত বোতাম হলুদ রঙে হাইলাইট করা হয়েছে। কন্ট্রোলারের উপরিভাগে উপরের বাম এবং ডান কোণে দুটি জয়স্টিক বোতাম রয়েছে, বাম জয়স্টিকের নিচে E আপ এবং ডাউন এবং ডান জয়স্টিকের নিচে F আপ এবং ডাউন। কন্ট্রোলারের পিছনে যথাক্রমে বাম এবং ডান দিকে L আপ এবং ডাউন এবং R আপ এবং ডাউন বোতাম রয়েছে।

বোতাম

আদেশ

buttonEDown

controller.buttonEDown.released(callback, arg) — E ▼ বাটন

buttonEUp

controller.buttonEUp.released(callback, arg) — E ▲ বাটন

buttonFDown

controller.buttonFDown.released(callback, arg) — F ▼ বাটন

buttonFUp

controller.buttonFUp.released(callback, arg) — F ▲ বাটন

buttonL3

controller.buttonL3.released(callback, arg) — বাম জয়স্টিক বাটন, শুধুমাত্র IQ (২য় প্রজন্ম) কন্ট্রোলারের জন্য

buttonLDown

controller.buttonLDown.released(callback, arg) — L ▼ বাটন

buttonLUp

controller.buttonLUp.released(callback, arg) — L ▲ বাটন

buttonR3

controller.buttonR3.released(callback, arg) — ডান জয়স্টিক বাটন, শুধুমাত্র IQ (২য় প্রজন্ম) কন্ট্রোলারের জন্য

buttonRDown

controller.buttonRDown.released(callback, arg) — R ▼ বাটন

buttonRUp

controller.buttonRUp.released(callback, arg) — R ▲ বাটন

প্যারামিটার

বর্ণনা

callback

নির্দিষ্ট বাটনটি প্রতিবার রিলিজ করা হলে রান করার জন্য পূর্বে সংজ্ঞায়িত একটি ফাংশন।

arg

ঐচ্ছিক। কলব্যাক ফাংশনে পাস করার জন্য আর্গুমেন্ট ধারণকারী একটি টাপল। আরও তথ্যের জন্য প্যারামিটার সহ ইভেন্টের ব্যবহার দেখুন।

# Stop driving when E Up is released
def stop_driving():
    drivetrain.stop()

controller.buttonEUp.released(stop_driving)

.changed#

.changed নির্দিষ্ট অক্ষ বরাবর জয়স্টিকের অবস্থান পরিবর্তিত হলে একটি ফাংশন চালায়। একবার এটি ব্যবহার করা হলে, সেই অক্ষ বরাবর জয়স্টিকের অবস্থান যতবারই পরিবর্তিত হবে, ফাংশনটি স্বয়ংক্রিয়ভাবে চলবে।

ব্যবহার:
এই পদ্ধতির সাথে উপলব্ধ অক্ষ বস্তুগুলোর মধ্যে একটি ব্যবহার করা যেতে পারে:

IQ 2nd gen কন্ট্রোলার, যার চারটি জয়স্টিক অ্যাক্সিস হাইলাইট করা আছে। বাম জয়স্টিকে, অ্যাক্সিস A হলো উল্লম্ব এবং অ্যাক্সিস B হলো অনুভূমিক। ডান জয়স্টিকে, অ্যাক্সিস C হলো অনুভূমিক এবং অ্যাক্সিস D হলো উল্লম্ব।

অক্ষ

আদেশ

axisA

controller.axisA.changed(callback, arg) — বাম জয়স্টিকের উল্লম্ব অক্ষ

axisB

controller.axisB.changed(callback, arg) — বাম জয়স্টিকের অনুভূমিক অক্ষ

axisC

controller.axisC.changed(callback, arg) — ডান জয়স্টিকের অনুভূমিক অক্ষ

axisD

controller.axisD.changed(callback, arg) — ডান জয়স্টিকের উল্লম্ব অক্ষ

প্যারামিটার

বর্ণনা

callback

নির্দিষ্ট অক্ষ বরাবর জয়স্টিকের অবস্থান প্রতিবার পরিবর্তিত হওয়ার সাথে সাথে চালানোর জন্য পূর্বে সংজ্ঞায়িত একটি ফাংশন।

arg

ঐচ্ছিক। কলব্যাক ফাংশনে পাস করার জন্য আর্গুমেন্ট ধারণকারী একটি টাপল। আরও তথ্যের জন্য প্যারামিটার সহ ইভেন্টের ব্যবহার দেখুন।

# Play a sound when the right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.changed(beep)

নির্মাণকারী#

Controller#

Controller একটি কন্ট্রোলার অবজেক্ট তৈরি করে। VEXcode-এর বাইরে কোনো কন্ট্রোলার কনফিগার করার সময়ই কেবল ম্যানুয়ালি একটি কন্ট্রোলার অবজেক্ট তৈরি করার প্রয়োজন হয়।

Usage:
Controller()

প্যারামিটার

বর্ণনা

এই কনস্ট্রাক্টরের কোনো প্যারামিটার নেই।

# Create a Controller object
my_controller = Controller()