ออปติคอล#

การแนะนำ#

เซ็นเซอร์แสงเป็นเซ็นเซอร์ที่ใช้แสงสะท้อนในการตรวจจับวัตถุ ระบุสี และวัดความสว่างและเฉดสี

นอกจากนี้ คุณยังสามารถปรับความสว่างของไฟภายในเซ็นเซอร์ได้อีกด้วย เครื่องมือเหล่านี้เหมาะสำหรับโปรแกรมที่ต้องการตอบสนองต่อวัตถุที่มีสี สภาพแสง หรือข้อมูลจากเซ็นเซอร์แบบเรียลไทม์

หน้านี้ใช้ optical_1 เป็นตัวอย่างชื่อเซ็นเซอร์แสง โปรดแทนที่ด้วยชื่อที่คุณกำหนดเองตามต้องการ

ด้านล่างนี้คือรายการวิธีการทั้งหมด:

การดำเนินการ — เปิดหรือปิดไฟ LED ของเซ็นเซอร์แสง

  • set_light — ตั้งค่าสถานะเปิดหรือปิดของ LED

ตัวปรับแต่ง — ปรับความสว่างของไฟ LED และการตั้งค่าการตรวจจับวัตถุ

  • set_light_power — ตั้งค่าความสว่างของ LED

  • object_detect_threshold — ตั้งค่าเกณฑ์สำหรับการตรวจจับวัตถุ

ตัวอ่านค่า — อ่านข้อมูลเกี่ยวกับการมีอยู่ของวัตถุ สี ความสว่าง เฉดสี RGB และสถานะของเซ็นเซอร์

  • is_near_object — ส่งคืนว่าวัตถุที่ตรวจพบอยู่ใกล้เซ็นเซอร์แสงหรือไม่

  • color — ส่งคืนการจับคู่สีที่ตรวจพบที่ใกล้เคียงที่สุด

  • brightness — ส่งคืนความสว่างของวัตถุที่ตรวจพบ

  • hue — ส่งคืนค่าสีของวัตถุที่ตรวจพบ

  • rgb — ส่งคืนค่า RGB ที่ตรวจพบโดยเซ็นเซอร์แสง

  • installed — ส่งคืนว่าเซ็นเซอร์แสงเชื่อมต่อกับสมองหรือไม่

ฟังก์ชันเรียกกลับ — เรียกใช้โค้ดเมื่อตรวจพบหรือสูญเสียวัตถุ

  • object_detected — ลงทะเบียนฟังก์ชันที่จะถูกเรียกเมื่อตรวจพบวัตถุ

  • object_lost — ลงทะเบียนฟังก์ชันที่จะถูกเรียกเมื่อวัตถุสูญหาย

ตัวสร้าง — กำหนดค่าและตั้งค่าเซ็นเซอร์แสงด้วยตนเอง

  • Optical — สร้างเซ็นเซอร์ออปติคอล

การกระทำ#

set_light#

set_light ตั้งค่าไฟ LED ของเซ็นเซอร์แสงให้เปิด ปิด หรือปรับความสว่างตามที่กำหนด

Usage:
optical_1.set_light(state)

พารามิเตอร์

คำอธิบาย

state

สถานะสำหรับตั้งค่าแสงหรือเปอร์เซ็นต์ของกำลังไฟในช่วง 0 ถึง 100 สถานะสามารถเป็นอย่างใดอย่างหนึ่งต่อไปนี้:

  • LedStateType.OFF (0 เปอร์เซ็นต์)
  • LedStateType.ON (100 เปอร์เซ็นต์)
  • integer — ค่าความสว่างที่กำหนดเป็นจำนวนเต็มตั้งแต่ 0 ถึง 100
# 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 ตั้งค่าความสว่างของไฟจากเซ็นเซอร์แสง หากไฟ LED ยังไม่เปิด วิธีนี้จะเปิดไฟ LED ด้วย

Usage:
optical_1.set_light_power(value)

พารามิเตอร์

คำอธิบาย

value

ปรับระดับความสว่างของแสงได้ตั้งแต่ 0 ถึง 100 เปอร์เซ็นต์

# 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 กำหนดช่วงที่เซ็นเซอร์สามารถตรวจจับวัตถุได้ เมธอดนี้ยังส่งคืนค่าเกณฑ์ที่ตั้งใหม่ด้วย

ตัวเลขที่ใกล้เคียงกับ 255 แสดงถึงช่วงที่แคบกว่า ในขณะที่ตัวเลขที่ใกล้เคียงกับ 0 แสดงถึงช่วงที่กว้างกว่า

Usage:
optical_1.object_detect_threshold(value)

พารามิเตอร์

คำอธิบาย

value

ตัวเลขในช่วง 0 - 255 ค่า 0 จะแสดงค่าปัจจุบัน

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 ถึง 359.99 องศา

เฉดสี คือวิธีการอธิบายสีโดยใช้ตัวเลขรอบวงล้อสี ดังแสดงในภาพด้านล่าง

วงล้อสีวงกลมที่แสดงเฉดสีครบทุกเฉดพร้อมระบุค่าองศาไว้รอบขอบ โดยเพิ่มขึ้นทีละ 30 องศาจาก 0° ที่ด้านบนถึง 360°

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 จะส่งคืนค่าสีแดง สีเขียว สีน้ำเงิน และความสว่างที่ตรวจจับได้โดยเซ็นเซอร์แสงในรูปแบบทูเปิล

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

A function that is previously defined to execute when an object is detected.

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

A function that is previously defined to execute when an object is lost.

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)

ผู้สร้าง#

ตัวสร้าง (Constructor) ใช้สำหรับสร้างอ็อบเจ็กต์ Optical ด้วยตนเอง ซึ่งจำเป็นสำหรับการกำหนดค่า Optical Sensor นอก VEXcode

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())