নিয়ন্ত্রক#

ভূমিকা#

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

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

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

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

অ্যাকশন — কন্ট্রোলারটি কাঁপান অথবা কনফিগার করা কন্ট্রোলার অ্যাকশনগুলো চালু/বন্ধ করুন।

  • rumble — কন্ট্রোলারে একটি রাম্বল প্যাটার্ন বাজায়।

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

স্ক্রিন — কন্ট্রোলার স্ক্রিনে লেখা এবং সংখ্যা প্রদর্শন করুন।

  • print — কন্ট্রোলার স্ক্রিনে টেক্সট, সংখ্যা, অথবা ভেরিয়েবলের মান প্রদর্শন করে।

  • set_cursor — কন্ট্রোলার স্ক্রিনে কার্সারকে একটি নির্দিষ্ট সারি এবং কলামে নিয়ে যায়।

  • column — কন্ট্রোলার স্ক্রিনে বর্তমান কার্সার কলাম ফেরত দেয়।

  • row — কন্ট্রোলার স্ক্রিনে বর্তমান কার্সার সারি ফেরত দেয়।

  • clear_screen — কন্ট্রোলার স্ক্রিন পরিষ্কার করে।

  • clear_row — কন্ট্রোলার স্ক্রিনের একটি সারি মুছে ফেলে।

  • next_row — কন্ট্রোলার স্ক্রিনে কার্সারকে পরবর্তী সারিতে নিয়ে যায়।

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

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

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

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

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

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

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

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

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

কর্ম#

rumble#

rumble কন্ট্রোলারে একটি রাম্বল প্যাটার্ন বাজায়। প্যাটার্ন স্ট্রিং-এ, ডট (ডট) হলো ছোট রাম্বল, হাইফেন হলো লম্বা রাম্বল, এবং স্পেস হলো বিরতি।

Usage:
controller_1.rumble(pattern)

প্যারামিটার

বর্ণনা

pattern

পিরিয়ড, হাইফেন এবং স্পেস দিয়ে গঠিত একটি স্ট্রিং যা রাম্বল প্যাটার্নকে উপস্থাপন করে।

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

remote_control_code_enabled#

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

Usage:
remote_control_code_enabled = state

মূল্য

বর্ণনা

True

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

False

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

# Drive forward or backward using the left joystick
remote_control_code_enabled = False

while True:
    if controller_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

স্ক্রিন#

V5 কন্ট্রোলার স্ক্রিনে লেখা ও সংখ্যা প্রদর্শনের জন্য ৩টি সারি এবং ১৯টি কলাম রয়েছে।

V5 কন্ট্রোলার স্ক্রিনের একটি স্ক্রিনশট, যেখানে মুদ্রণযোগ্য এলাকার সারি এবং কলামগুলি দেখানো হচ্ছে। সারি ১, কলাম ১ উপরের বাম কোণ থেকে শুরু হয় এবং সারি ৩, কলাম ১৯ নিচের ডান কোণে রয়েছে।

print#

controller_1.screen.print কন্ট্রোলার স্ক্রিনে বর্তমান কার্সরের অবস্থান ব্যবহার করে টেক্সট, সংখ্যা বা ভেরিয়েবলের মান প্রদর্শন করে।

Usage:
controller_1.screen.print(value, sep, precision)

প্যারামিটার

বর্ণনা

value

কন্ট্রোলার স্ক্রিনে প্রদর্শন করার জন্য টেক্সট, সংখ্যা বা ভেরিয়েবলের মান। একাধিক মান কমা দিয়ে আলাদা করে প্রিন্ট করা যেতে পারে।

sep

ঐচ্ছিক। মানগুলোর মাঝে রাখার জন্য একটি স্ট্রিং। এটি অবশ্যই একটি কীওয়ার্ড আর্গুমেন্ট হিসেবে লিখতে হবে, যেমন sep=”- “। ডিফল্ট হলো ” “।

precision

ঐচ্ছিক। সাধারণ সংখ্যা প্রিন্ট করার সময় দশমিকের পর কত ঘর দেখানো হবে। এটি অবশ্যই একটি কীওয়ার্ড আর্গুমেন্ট হিসেবে লিখতে হবে, যেমন precision=2ডিফল্ট মান হলো 2।

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor কার্সারকে কন্ট্রোলার স্ক্রিনের একটি নির্দিষ্ট সারি এবং কলামে নিয়ে যায়। পরবর্তী মুদ্রিত মানটি সেই অবস্থানে প্রদর্শিত হবে।

Usage:
controller_1.screen.set_cursor(row, col)

প্যারামিটার

বর্ণনা

row

কার্সরের সারি, 1 থেকে 3 পর্যন্ত।

col

কার্সরের কলামটি 1 থেকে 19 পর্যন্ত।

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

column কন্ট্রোলার স্ক্রিনে যে কলামে টেক্সট প্রিন্ট করা হবে, সেই বর্তমান কলামটি রিটার্ন করে।

Usage:
controller_1.screen.column()

প্যারামিটার

বর্ণনা

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

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

row কন্ট্রোলার স্ক্রিনে বর্তমান সারিটি ফেরত দেয় যেখানে লেখাটি প্রিন্ট করা হবে।

Usage:
controller_1.screen.row()

প্যারামিটার

বর্ণনা

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

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen কন্ট্রোলার স্ক্রিন পরিষ্কার করে এবং কার্সারকে শুরুর অবস্থানে ফিরিয়ে নিয়ে যায়।

Usage:
controller_1.screen.clear_screen()

প্যারামিটার

বর্ণনা

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

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row কন্ট্রোলার স্ক্রিনের একটি সারি মুছে ফেলে।

Usage:
controller_1.screen.clear_row(row)

প্যারামিটার

বর্ণনা

row

ঐচ্ছিক। যে সারিটি খালি করতে চান, তা 1 থেকে 3পর্যন্ত হতে পারে। কোনো সারি নির্দিষ্ট না করা হলে, বর্তমান কার্সরের সারিটি খালি হয়ে যাবে।

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

next_row কার্সারকে কন্ট্রোলার স্ক্রিনের পরবর্তী সারির প্রথম কলামে নিয়ে যায়। পরবর্তী মুদ্রিত মানটি সেই সারিতে প্রদর্শিত হবে।

Usage:
controller_1.screen.next_row()

প্যারামিটার

বর্ণনা

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

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

গেটার্স#

.pressing#

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

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

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

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

V5 কন্ট্রোলারের সামনের এবং পিছনের দিক, যেখানে বাটনগুলো হলুদ রঙে হাইলাইট করা আছে। কন্ট্রোলারের উপরিভাগে বাম দিকে আপ, ডাউন, লেফট এবং রাইট অ্যারো বাটন এবং ডান দিকে ১২টা থেকে ঘড়ির কাঁটার দিকে X, A, B, Y বাটন রয়েছে। কন্ট্রোলারের পিছনের দিকে যথাক্রমে বাম এবং ডান পাশে L1, L2, R1, এবং R2 বাটন রয়েছে।

বোতাম

আদেশ

buttonA

controller_1.buttonA.pressing() — A বাটন

buttonB

controller_1.buttonB.pressing() — B বাটন

buttonX

controller_1.buttonX.pressing() — X বাটন

buttonY

controller_1.buttonY.pressing() — Y বাটন

buttonDown

controller_1.buttonDown.pressing() — ডাউন বাটন

buttonUp

controller_1.buttonUp.pressing() — উপরের বাটন

buttonLeft

controller_1.buttonLeft.pressing() — বাম বাটন

buttonRight

controller_1.buttonRight.pressing() — ডান বাটন

buttonL1

controller_1.buttonL1.pressing() — L1 বাটন

buttonL2

controller_1.buttonL2.pressing() — L2 বাটন

buttonR1

controller_1.buttonR1.pressing() — R1 বাটন

buttonR2

controller_1.buttonR2.pressing() — R2 বাটন

প্যারামিটার

বর্ণনা

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

# Turn right while L1 is pressed
while True:
    if controller_1.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

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

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

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

একটি VEX V5 কন্ট্রোলার যার জয়স্টিকগুলোর চারপাশের অক্ষগুলো চিহ্নিত করা আছে। অক্ষ ১ এবং ২ ডান জয়স্টিকের চারপাশে, এবং অক্ষ ৩ এবং ৪ বাম জয়স্টিকের চারপাশে অবস্থিত।

অক্ষ

আদেশ

axis1

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

axis2

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

axis3

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

axis4

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

প্যারামিটার

বর্ণনা

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

# Turn with the left joystick
remote_control_code_enabled = False

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

    wait(20, MSEC)

কলব্যাক#

.pressed#

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

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

V5 কন্ট্রোলারের সামনের এবং পিছনের দিক, যেখানে বাটনগুলো হলুদ রঙে হাইলাইট করা আছে। কন্ট্রোলারের উপরিভাগে বাম দিকে আপ, ডাউন, লেফট এবং রাইট অ্যারো বাটন এবং ডান দিকে ১২টা থেকে ঘড়ির কাঁটার দিকে X, A, B, Y বাটন রয়েছে। কন্ট্রোলারের পিছনের দিকে যথাক্রমে বাম এবং ডান পাশে L1, L2, R1, এবং R2 বাটন রয়েছে।

বোতাম

আদেশ

buttonA

controller_1.buttonA.pressed(callback, arg) — A বাটন

buttonB

controller_1.buttonB.pressed(callback, arg) — B বাটন

buttonX

controller_1.buttonX.pressed(callback, arg) — X বাটন

buttonY

controller_1.buttonY.pressed(callback, arg) — Y বাটন

buttonDown

controller_1.buttonDown.pressed(callback, arg) — ডাউন বাটন

buttonUp

controller_1.buttonUp.pressed(callback, arg) — উপরের বাটন

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — বাম বাটন

buttonRight

controller_1.buttonRight.pressed(callback, arg) — ডান বাটন

buttonL1

controller_1.buttonL1.pressed(callback, arg) — L1 বাটন

buttonL2

controller_1.buttonL2.pressed(callback, arg) — L2 বাটন

buttonR1

controller_1.buttonR1.pressed(callback, arg) — R1 বাটন

buttonR2

controller_1.buttonR2.pressed(callback, arg) — R2 বাটন

প্যারামিটার

বর্ণনা

callback

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

arg

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

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

controller_1.buttonA.pressed(drive_forward)

.released#

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

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

V5 কন্ট্রোলারের সামনের এবং পিছনের দিক, যেখানে বাটনগুলো হলুদ রঙে হাইলাইট করা আছে। কন্ট্রোলারের উপরিভাগে বাম দিকে আপ, ডাউন, লেফট এবং রাইট অ্যারো বাটন এবং ডান দিকে ১২টা থেকে ঘড়ির কাঁটার দিকে X, A, B, Y বাটন রয়েছে। কন্ট্রোলারের পিছনের দিকে যথাক্রমে বাম এবং ডান পাশে L1, L2, R1, এবং R2 বাটন রয়েছে।

বোতাম

আদেশ

buttonA

controller_1.buttonA.released(callback, arg) — A বাটন

buttonB

controller_1.buttonB.released(callback, arg) — B বাটন

buttonX

controller_1.buttonX.released(callback, arg) — X বাটন

buttonY

controller_1.buttonY.released(callback, arg) — Y বাটন

buttonDown

controller_1.buttonDown.released(callback, arg) — ডাউন বাটন

buttonUp

controller_1.buttonUp.released(callback, arg) — উপরের বাটন

buttonLeft

controller_1.buttonLeft.released(callback, arg) — বাম বাটন

buttonRight

controller_1.buttonRight.released(callback, arg) — ডান বাটন

buttonL1

controller_1.buttonL1.released(callback, arg) — L1 বাটন

buttonL2

controller_1.buttonL2.released(callback, arg) — L2 বাটন

buttonR1

controller_1.buttonR1.released(callback, arg) — R1 বাটন

buttonR2

controller_1.buttonR2.released(callback, arg) — R2 বাটন

প্যারামিটার

বর্ণনা

callback

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

arg

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

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

.changed#

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

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

একটি VEX V5 কন্ট্রোলার যার জয়স্টিকগুলোর চারপাশের অক্ষগুলো চিহ্নিত করা আছে। অক্ষ ১ এবং ২ ডান জয়স্টিকের চারপাশে, এবং অক্ষ ৩ এবং ৪ বাম জয়স্টিকের চারপাশে অবস্থিত।

অক্ষ

আদেশ

axis1

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

axis2

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

axis3

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

axis4

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

প্যারামিটার

বর্ণনা

callback

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

arg

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

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

controller_1.axis4.changed(tada_sound)

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

Controller#

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

Usage:
Controller(controller_type)

প্যারামিটার

বর্ণনা

controller_type

ঐচ্ছিক। যে কন্ট্রোলারটি তৈরি করতে চান: ব্রেইনের সাথে সংযুক্ত প্রাথমিক কন্ট্রোলারের জন্য PRIMARY ​​অথবা ব্রেইনের সাথে সংযুক্ত দ্বিতীয় কন্ট্রোলারের জন্য PARTNER।

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)