光学的#

介绍#

光学传感器是一种基于光的传感器,它使用反射光来检测物体、识别颜色以及测量亮度和色调。

This page uses optical_1 as the example Optical Sensor name. Replace it with your own configured name as needed.

Below is a list of all methods:

Actions — Turn the Optical Sensor’s LED on or off.

  • set_light — Set the on or off state of the LED.

Mutators — Adjust LED brightness and object detection settings.

Getters — Read object presence, color, brightness, hue, RGB, and sensor status.

  • is_near_object — Returns whether or not a detected object is near the Optical Sensor.

  • color — Returns the closest detected color match.

  • brightness — Returns the brightness of a detected object.

  • hue — Returns the hue of a detected object.

  • rgb — Returns the RGB values detected by the Optical Sensor.

  • installed — Returns whether or not an Optical Sensor is connected to the Brain.

Callback — Run code when an object is detected or lost.

  • object_detected — Registers a function to be called when an object is detected.

  • object_lost — Registers a function to be called when an object is lost.

Constructors — Manually initialize and configure an Optical Sensor.

  • Optical — Creates an Optical Sensor.

行动#

set_light#

set_light sets Optical Sensor’s LED to on or off with an LED state or an integer.

Usage:
optical_1.set_light(state)

参数

描述

state

The state to set the light or the percentage of power in the range 0 to 100. The state can be either of the following:

  • LedStateType.OFF (0 percent)
  • LedStateType.ON (100 percent)
  • integer — A brightness value given as a percent from 0 to 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 sets the brightness of the Optical Sensor’s light, helping create a more consistent and reliable light source for the sensor.

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 sets the object detection threshold. This method also returns the newly set threshold.

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 returns whether or not the Optical Sensor is nearby an object.

  • True — The sensor is near an object.

  • False — The sensor is not near an object.

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 returns the predefined color detected by the Optical Sensor:

  • 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 returns the brightness detected by the Optical Sensor.

Usage:
optical_1.brightness(readraw)

参数

描述

readraw

Optional. A Boolean value to read raw brightness data instead of percentage:

  • True — Return the raw data.
  • False (default) — Return brightness as a percentage.

hue#

hue returns the value of the hue detected by the Optical Sensor as a float in the range of 0 to 359.99 degrees, corresponding to positions on the color wheel shown below.

A circular color wheel displaying a full spectrum of hues labeled with degree values around the perimeter, increasing in 30-degree increments from 0° at the top to 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 returns the Optical Sensor’s RGB value.

Usage:
optical_1.rgb(raw)

参数

描述

raw

Optional. A Boolean value to determine if you return raw or processed values:

  • True — Return the raw value.
  • False (default) — Do not return the raw value.
# 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 returns a Boolean indicating whether the Optical Sensor is connected to the Brain.

  • True — The Optical Sensor is connected to the Brain.

  • False — The Optical Sensor is not connected to the Brain.

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 registers a callback function for when an object is detected.

Usage:
optical_1.object_detected(callback, arg)

参数

描述

callback

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

arg

可选。包含要传递给回调函数的参数的元组。更多信息,请参阅带参数的函数](…/Logic/Functions.md#functions-with-parameters)。

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 registers a callback function for when the Optical Sensor loses a detected object.

Usage:
optical_1.object_lost(callback, arg)

参数

描述

callback

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

arg

可选。包含要传递给回调函数的参数的元组。更多信息,请参阅带参数的函数](…/Logic/Functions.md#functions-with-parameters)。

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)

构造函数#

Constructors are used to manually create Optical objects, which are necessary for configuring an Optical Sensor outside of VEXcode.

Optical#

Optical creates an Optical Sensor.

Usage:
Optical(smartport)

范围

描述

smartport

The Smart Port that the Optical Sensor is connected to, written as PORTx where x is the number of the port.

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