নিয়ন্ত্রক#

ভূমিকা#

VEX AIR ড্রোন কন্ট্রোলারে একটি ১২-বাটন লেআউট এবং দুটি জয়স্টিক রয়েছে। এই ইনপুটগুলো ড্রোনকে বাটন চাপ এবং জয়স্টিকের নড়াচড়া শনাক্ত করতে সাহায্য করে, যার ফলে ইন্টারেক্টিভ ও রেসপন্সিভ নিয়ন্ত্রণ সম্ভব হয়।

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

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

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

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

  • is_drone_connected – কন্ট্রোলারটি ড্রোনের সাথে সংযুক্ত আছে কিনা তা ফেরত দেয়।

  • get_battery_level – কন্ট্রোলারের ব্যাটারির লেভেল ফেরত দেয়।

কলব্যাক – বাটন বা জয়স্টিকের ইনপুট পরিবর্তনে সাড়া দেয়।

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

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

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

গেটার্স#

pressing#

pressing রিটার্ন হয়, যা নির্দেশ করে কন্ট্রোলারের কোনো নির্দিষ্ট বাটন বর্তমানে চাপা আছে কি না। এই মেথডটি অবশ্যই একটি নির্দিষ্ট বাটন অবজেক্টে কল করতে হবে, যেমন button5 (নিচে বাটন অবজেক্টের সম্পূর্ণ তালিকা দেখুন)।

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

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

ব্যবহারবিধি: এই পদ্ধতিতে ৫ থেকে ১২ নম্বরযুক্ত আটটি উপলব্ধ বোতামের মধ্যে
একটি ব্যবহার করা যেতে পারে, যেমনটি নিচে দেখানো হয়েছে:

বোতাম

আদেশ

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

একটি VEX AIR ড্রোন কন্ট্রোলার যেখানে ৫ থেকে ১২ নম্বর বাটনগুলো দেখানো হচ্ছে। ৫ এবং ৬ নম্বর বাটন কন্ট্রোলারের ডান পাশের পেছনের দিকে, জয়স্টিকের সাথে লম্বভাবে অবস্থিত। ৭ এবং ৮ নম্বর বাটন বাম পাশে একই অবস্থানে রয়েছে। ৯ থেকে ১২ নম্বর বাটনগুলো কন্ট্রোলারের নিচের পৃষ্ঠে অবস্থিত, যার মধ্যে ৯ নম্বর বাটনটি ১০-এর উপরে ডান কোণায় এবং ১১ নম্বর বাটনটি ১২-এর উপরে বাম কোণায় রয়েছে।

প্যারামিটার

বর্ণনা

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

# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Fly using the controller sticks
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )

    # Capture an image from the forward camera when button 5 is pressed.
    if controller.button5.pressing():
        drone.camera.capture_image(FORWARD_CAMERA)

    wait(5, MSEC)

position#

position জয়স্টিকের নির্দিষ্ট অক্ষের অবস্থানকে –100% থেকে 100% পর্যন্ত শতাংশ হিসাবে ফেরত দেয়।

ব্যবহারবিধি:

এই পদ্ধতিতে ১ থেকে ৪ পর্যন্ত সংখ্যাযুক্ত চারটি উপলব্ধ অক্ষের যেকোনো একটি ব্যবহার করা যেতে পারে।

অক্ষ

আদেশ

axis1

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

axis2

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

axis3

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

axis4

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

একটি VEX AIR ড্রোন কন্ট্রোলার যার বাম জয়স্টিকের চারপাশে Axis 1 এবং 2 লেবেল, এবং ডান জয়স্টিকের চারপাশে Axis 3 এবং 4 লেবেল হাইলাইট করা আছে।

প্যারামিটার

বর্ণনা

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

# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
    if controller.axis1.position() > 0:
        drone.climb(direction=UP, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

is_drone_connected#

is_drone_connected একটি বুলিয়ান মান রিটার্ন করে যা নির্দেশ করে ড্রোনটি সংযুক্ত আছে কি না।

  • True - ড্রোনটি সংযুক্ত আছে।

  • False - ড্রোনটি সংযুক্ত নয়।

ব্যবহারবিধি:

controller.is_drone_connected()

প্যারামিটার

বর্ণনা

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

# Print controller connection status on screen.
while True:
    if controller.is_drone_connected():
        controller.screen.clear_screen()
        controller.screen.set_cursor(1, 1)
        controller.screen.print("Controller connected")
    wait(0.5, SECONDS)

get_battery_level#

get_battery_level কন্ট্রোলারের ব্যাটারির লেভেল ০% থেকে ১০০% পর্যন্ত শতাংশে ফেরত দেয়।

ব্যবহারবিধি:

controller.get_battery_level()

প্যারামিটার

বর্ণনা

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

# Show controller's battery level.
if controller.get_battery_level() > 50:
    controller.screen.print("Battery level ok")
else:
    controller.screen.print("Battery level low")

কলব্যাক#

pressed#

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

ব্যবহারবিধি: এই পদ্ধতিতে ৫ থেকে ১২ পর্যন্ত সংখ্যাযুক্ত আটটি উপলব্ধ বোতামের মধ্যে
একটি ব্যবহার করা যাবে।

বোতাম

আদেশ

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

একটি VEX AIR ড্রোন কন্ট্রোলার যেখানে ৫ থেকে ১২ নম্বর বাটনগুলো দেখানো হচ্ছে। ৫ এবং ৬ নম্বর বাটন কন্ট্রোলারের ডান পাশের পেছনের দিকে, জয়স্টিকের সাথে লম্বভাবে অবস্থিত। ৭ এবং ৮ নম্বর বাটন বাম পাশে একই অবস্থানে রয়েছে। ৯ থেকে ১২ নম্বর বাটনগুলো কন্ট্রোলারের নিচের পৃষ্ঠে অবস্থিত, যার মধ্যে ৯ নম্বর বাটনটি ১০-এর উপরে ডান কোণায় এবং ১১ নম্বর বাটনটি ১২-এর উপরে বাম কোণায় রয়েছে।

প্যারামিটার

বর্ণনা

callback

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

arg

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

# Take a picture when button 5 is pressed.
def take_picture():
    drone.camera.capture_image(FORWARD_CAMERA)

# Run take_picture each time button 5 is pressed.
controller.button5.pressed(take_picture)

# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

released#

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

ব্যবহারবিধি: এই পদ্ধতিতে ৫ থেকে ১২ পর্যন্ত সংখ্যাযুক্ত আটটি উপলব্ধ বোতামের মধ্যে
একটি ব্যবহার করা যাবে।

বোতাম

আদেশ

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

একটি VEX AIR ড্রোন কন্ট্রোলার যেখানে ৫ থেকে ১২ নম্বর বাটনগুলো দেখানো হচ্ছে। ৫ এবং ৬ নম্বর বাটন কন্ট্রোলারের ডান পাশের পেছনের দিকে, জয়স্টিকের সাথে লম্বভাবে অবস্থিত। ৭ এবং ৮ নম্বর বাটন বাম পাশে একই অবস্থানে রয়েছে। ৯ থেকে ১২ নম্বর বাটনগুলো কন্ট্রোলারের নিচের পৃষ্ঠে অবস্থিত, যার মধ্যে ৯ নম্বর বাটনটি ১০-এর উপরে ডান কোণায় এবং ১১ নম্বর বাটনটি ১২-এর উপরে বাম কোণায় রয়েছে।

প্যারামিটার

বর্ণনা

callback

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

arg

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

# Take a picture when button 5 is released.
def take_picture():
    drone.camera.capture_image(FORWARD_CAMERA)

# Run take_picture each time button 5 is released.
controller.button5.released(take_picture)

# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

changed#

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

ব্যবহারবিধি:

এই পদ্ধতিতে ১ থেকে ৪ পর্যন্ত সংখ্যাযুক্ত চারটি উপলব্ধ অক্ষের যেকোনো একটি ব্যবহার করা যেতে পারে।

অক্ষ

আদেশ

axis1

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

axis2

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

axis3

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

axis4

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

একটি VEX AIR ড্রোন কন্ট্রোলার যার বাম জয়স্টিকের চারপাশে Axis 1 এবং 2 লেবেল, এবং ডান জয়স্টিকের চারপাশে Axis 3 এবং 4 লেবেল হাইলাইট করা আছে।

প্যারামিটার

বর্ণনা

callback

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

arg

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

# Move forward when the left joystick moves.
def on_axis1_changed():
    drone.move_for(direction=0, distance=200, velocity=50, units=MM)

drone.take_off(climb_to=500)
controller.axis1.changed(on_axis1_changed)