অপটিক্যাল#

ভূমিকা#

অপটিক্যাল সেন্সর হলো একটি আলোক-ভিত্তিক সেন্সর যা প্রতিফলিত আলো ব্যবহার করে বস্তু শনাক্ত করে, রং চিহ্নিত করে এবং উজ্জ্বলতা ও বর্ণচ্ছটা পরিমাপ করে।

আপনি সেন্সরের অভ্যন্তরীণ আলোর উজ্জ্বলতাও নিয়ন্ত্রণ করতে পারেন। এই টুলগুলো এমন প্রোগ্রামের জন্য আদর্শ, যেগুলোকে রঙিন বস্তু, আলোর অবস্থা বা সেন্সরের প্রতিক্রিয়ার ওপর ভিত্তি করে রিয়েল-টাইমে কাজ করতে হয়।

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

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

ক্রিয়াকলাপ — অপটিক্যাল সেন্সরের এলইডি চালু বা বন্ধ করুন।

  • set_light — LED-এর অন বা অফ অবস্থা নির্ধারণ করে।

মিউটেটর — এলইডি-র উজ্জ্বলতা এবং বস্তু শনাক্তকরণ সেটিংস সমন্বয় করুন।

  • set_light_power — LED-র উজ্জ্বলতা নির্ধারণ করে।

  • object_detect_threshold — বস্তু সনাক্ত করার জন্য থ্রেশহোল্ড নির্ধারণ করে।

গেটার — বস্তুর উপস্থিতি, রঙ, উজ্জ্বলতা, হিউ, আরজিবি এবং সেন্সরের অবস্থা পড়ে।

  • is_near_object — সনাক্ত করা বস্তুটি অপটিক্যাল সেন্সরের কাছে আছে কিনা তা ফেরত দেয়।

  • color — সনাক্ত করা সবচেয়ে কাছের রঙের মিল ফেরত দেয়।

  • brightness — সনাক্ত করা বস্তুর উজ্জ্বলতা ফেরত দেয়।

  • hue — সনাক্ত করা বস্তুর রঙ (hue) ফেরত দেয়।

  • rgb — অপটিক্যাল সেন্সর দ্বারা শনাক্ত করা RGB মানগুলি ফেরত দেয়।

  • installed — একটি অপটিক্যাল সেন্সর মস্তিষ্কের সাথে সংযুক্ত আছে কিনা তা ফেরত দেয়।

কলব্যাক — কোনো অবজেক্ট শনাক্ত হলে বা হারিয়ে গেলে কোডটি রান করে।

  • object_detected — কোনো অবজেক্ট শনাক্ত হলে কল করার জন্য একটি ফাংশন রেজিস্টার করে।

  • object_lost — কোনো অবজেক্ট হারিয়ে গেলে কল করার জন্য একটি ফাংশন রেজিস্টার করে।

কনস্ট্রাক্টর — একটি অপটিক্যাল সেন্সর ম্যানুয়ালি ইনিশিয়ালাইজ এবং কনফিগার করুন।

  • Optical — একটি অপটিক্যাল সেন্সর তৈরি করে।

কর্ম#

set_light#

set_light অপটিক্যাল সেন্সরের LED-কে অন, অফ অথবা একটি নির্দিষ্ট উজ্জ্বলতার স্তরে সেট করে।

Usage:
optical_1.set_light(state)

প্যারামিটার

বর্ণনা

state

আলোর অবস্থা অথবা ০ থেকে ১০০ পরিসরের মধ্যে শক্তির শতাংশ সেট করার অবস্থা। অবস্থাটি নিম্নলিখিতগুলির মধ্যে যেকোনো একটি হতে পারে:

  • LedStateType.OFF (০ শতাংশ)
  • LedStateType.ON (১০০ শতাংশ)
  • integer — ০ থেকে ১০০ এর মধ্যে একটি পূর্ণসংখ্যা হিসাবে প্রদত্ত উজ্জ্বলতার মান।
# Turn the LED on and off forever
while True:
    optical_1.set_light(LedStateType.ON)
    wait(0.5, SECONDS)
    optical_1.set_light(LedStateType.OFF)
    wait(0.5, SECONDS)

# Turn the LED on and off forever
while True:
    optical_1.set_light(100)
    wait(0.5, SECONDS)
    optical_1.set_light(0)
    wait(0.5, SECONDS)

মিউটেটর#

set_light_power#

set_light_power অপটিক্যাল সেন্সরের আলোর উজ্জ্বলতা নির্ধারণ করে। যদি এলইডি আগে থেকে চালু না থাকে, তবে এই পদ্ধতিটি এলইডি-টিকেও চালু করে দেবে।

Usage:
optical_1.set_light_power(value)

প্যারামিটার

বর্ণনা

value

আলোর পাওয়ার লেভেল ০ থেকে ১০০ পর্যন্ত শতাংশে সেট করার সুবিধা।

# Turn the LED light on at different
# intensities
optical_1.set_light(LedStateType.ON)
wait(2, SECONDS)
optical_1.set_light_power(10)
wait(2, SECONDS)
optical_1.set_light_power(100)

object_detect_threshold#

object_detect_threshold সেই পরিসর নির্ধারণ করে যেখান থেকে সেন্সরটি বস্তু শনাক্ত করতে পারে। এই পদ্ধতিটি নতুন নির্ধারিত থ্রেশহোল্ডটিও ফেরত দেয়।

২৫৫-এর কাছাকাছি সংখ্যাগুলো একটি ছোট পরিসর নির্দেশ করে, অন্যদিকে ০-এর কাছাকাছি সংখ্যাগুলো একটি বড় পরিসর নির্দেশ করে।

Usage:
optical_1.object_detect_threshold(value)

প্যারামিটার

বর্ণনা

value

০ থেকে ২৫৫ পরিসরের মধ্যে একটি সংখ্যা। ০ মানটি দিলে শুধু বর্তমান মানটিই ফেরত আসবে।

def detected():
    # The Brain will print that an object was detected on
    # the Brain's screen.
    brain.screen.print("object detected")
    brain.screen.next_row()
    optical_1.object_detect_threshold(254)
    optical_1.object_detected(detected_closer)

def detected_closer():
    # Detect an object closer to the sensor.
    brain.screen.print("Detected closer")
    
# Run detected when the Optical Sensor detects an object.
optical_1.object_detect_threshold(100)
optical_1.object_detected(detected)

# Detect an object first with the detect threshold at 100,
# then again at 254
stage = 0

def detected():
    global stage
    if stage == 0:
        brain.screen.print("Get closer...")
        brain.screen.next_row()
        stage = 1
        optical_1.object_detect_threshold(254)
        optical_1.object_detected(detected_closer)

def detected_closer():
    global stage
    if stage == 1:
        brain.screen.print("Too close!")
        brain.screen.next_row()
        stage = 2

optical_1.object_detect_threshold(100)
optical_1.object_detected(detected)
wait(15, MSEC)

গেটার্স#

is_near_object#

is_near_object অপটিক্যাল সেন্সরটি কোনো বস্তুর কাছাকাছি আছে কিনা তা ফেরত দেয়।

  • True — সেন্সরটি কোনো বস্তুর কাছাকাছি আছে।

  • False — সেন্সরটি কোনো বস্তুর কাছাকাছি নেই।

Usage:
optical_1.is_near_object()

প্যারামিটার

বর্ণনা

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

# Stop driving when Optical Sensor is 
# near an object
while True:
    if optical_1.is_near_object():
        drivetrain.stop()
    else:
        drivetrain.drive(FORWARD)

color#

color নিচের রঙগুলো থেকে অপটিক্যাল সেন্সর দ্বারা শনাক্ত করা পূর্বনির্ধারিত রঙটি ফেরত দেয়:

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

প্যারামিটার

বর্ণনা

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

# Stop the robot if the Optical Sensor 
# detects red
while True:
    if optical_1.color() == Color.RED:
        drivetrain.stop()
    else:
        drivetrain.turn(RIGHT)

brightness#

brightness অপটিক্যাল সেন্সর দ্বারা শনাক্ত করা উজ্জ্বলতা ফেরত দেয়।

উচ্চতর শতাংশের অর্থ হলো অপটিক্যাল সেন্সরটি বেশি আলো শনাক্ত করছে। নিম্নতর শতাংশের অর্থ হলো অপটিক্যাল সেন্সরটি কম আলো শনাক্ত করছে।

Usage:
optical_1.brightness(readraw)

প্যারামিটার

বর্ণনা

readraw

ঐচ্ছিক। শতাংশের পরিবর্তে আসল উজ্জ্বলতার ডেটা পড়ার জন্য একটি বুলিয়ান মান:

  • True — আসল ডেটা ফেরত দিন।
  • False (ডিফল্ট) — উজ্জ্বলতা শতাংশ হিসাবে ফেরত দিন।

hue#

hue অপটিক্যাল সেন্সর দ্বারা শনাক্ত করা হিউ-এর মান ০ থেকে ৩৫৯.৯৯ ডিগ্রীর পরিসরের মধ্যে একটি ফ্লোট হিসেবে ফেরত দেয়।

হিউ হলো কালার হুইলের সংখ্যা ব্যবহার করে রঙ বর্ণনা করার একটি উপায়, যেমনটি নিচে দেখানো হয়েছে।

একটি বৃত্তাকার রঙের চাকা যা রঙের একটি সম্পূর্ণ বর্ণালী প্রদর্শন করে, যার পরিধি বরাবর ডিগ্রি মান চিহ্নিত করা আছে, যা উপরের 0° থেকে 360° পর্যন্ত 30-ডিগ্রি বৃদ্ধিতে বৃদ্ধি পায়।

Usage:
optical_1.hue()

প্যারামিটার

বর্ণনা

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

# Check the hue of a detected object
# to determine if it is pink
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    if 290 < optical_1.hue() < 350:
        brain.screen.print("Pink!")
        wait(0.1,SECONDS)
    else:
        brain.screen.print("Not pink.")
        wait(0.1,SECONDS)

rgb#

rgb অপটিক্যাল সেন্সর দ্বারা শনাক্ত করা লাল, সবুজ, নীল এবং উজ্জ্বলতার মানগুলোকে একটি টাপল (Tuple) হিসেবে ফেরত দেয়।

Usage:
optical_1.rgb(raw)

প্যারামিটার

বর্ণনা

raw

ঐচ্ছিক। আপনি মূল মান নাকি প্রক্রিয়াজাত মান ফেরত দেবেন তা নির্ধারণ করার জন্য একটি বুলিয়ান মান:

  • True — মূল মান ফেরত দিন।
  • False (ডিফল্ট) — মূল মান ফেরত দেবেন না।
# Display the rgb values and brightness detected
# by the Optical Sensor.
brain.screen.set_font(FontType.MONO12)
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print(optical_1.rgb())
    wait(0.1, SECONDS)

installed#

installed একটি বুলিয়ান মান প্রদান করে যা নির্দেশ করে অপটিক্যাল সেন্সরটি মস্তিষ্কের সাথে সংযুক্ত আছে কিনা।

  • True — অপটিক্যাল সেন্সরটি মস্তিষ্কের সাথে সংযুক্ত।

  • False — অপটিক্যাল সেন্সরটি মস্তিষ্কের সাথে সংযুক্ত নয়।

Usage:
optical_1.installed()

প্যারামিটার

বর্ণনা

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

# Display a message if the Optical Sensor
# is installed.
if optical_1.installed():
    brain.screen.print("Installed!")

কলব্যাক#

object_detected#

object_detected কোনো অবজেক্ট শনাক্ত হলে তার জন্য একটি কলব্যাক ফাংশন রেজিস্টার করে।

Usage:
optical_1.object_detected(callback, arg)

প্যারামিটার

বর্ণনা

callback

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

arg

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

def detected():
    drivetrain.stop()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("object detected")
    wait(0.5,SECONDS)
    brain.screen.clear_screen()

# Display a message when the 
# Optical Sensor detects an object
drivetrain.drive(FORWARD)
optical_1.object_detected(detected)

object_lost#

object_lost একটি কলব্যাক ফাংশন রেজিস্টার করে, যা অপটিক্যাল সেন্সর কোনো শনাক্ত করা বস্তু হারিয়ে ফেললে ব্যবহৃত হয়।

Usage:
optical_1.object_lost(callback, arg)

প্যারামিটার

বর্ণনা

callback

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

arg

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

def lost():
    drivetrain.stop()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("object lost")
    wait(0.5,SECONDS)
    brain.screen.clear_screen()

# Display a message when the Optical 
# Sensor loses sight of on object
drivetrain.drive(REVERSE)
optical_1.object_lost(lost)

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

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

Optical#

Optical একটি অপটিক্যাল সেন্সর তৈরি করে।

Usage:
Optical(smartport)

প্যারামিটার

বর্ণনা

smartport

যে স্মার্ট পোর্টের সাথে অপটিক্যাল সেন্সরটি সংযুক্ত থাকে, তাকে PORTx হিসেবে লেখা হয়, যেখানে x হলো পোর্টের নম্বর।

# Construct an Optical Sensor "optical_1" with the
# Optical class
optical_1 = Optical(Ports.PORT1)

# Display the brightness of a red object detected
# by the Optical Sensor
drivetrain.turn(RIGHT)
while not optical_1.color() == Color.RED:
    wait(50, MSEC)
drivetrain.stop()
brain.screen.print(optical_1.brightness())