Optical Sensor#
Introduction#
The V5 Optical Sensor detects the color, brightness, and presence of nearby objects using a combination of an RGB color sensor and proximity sensor. It can also use its built-in LED to illuminate objects for more accurate detection.

This page uses optical_sensor as the example Optical Sensor name. Replace it with your own configured name as needed.
Below is a list of available methods:
set_light– Turns the Optical Sensor’s LED on or off.set_light_power– Adjusts the brightness of the Optical Sensor’s LED.is_near_object– Returns whether the Optical Sensor is detecting an object.color– Returns whether the Optical Sensor is detecting a specified color.brightness– Returns the amount of light reflected from the object as a percent.hue– Returns the hue value of the detected color.object_detected– Registers a function to be called whenever the Optical Sensor detects an object.object_lost– Registers a function to be called whenever the Optical Sensor loses an object.
Constructor – Manually initialize an Optical Sensor.
Optical– Creates an Optical Sensor.
set_light#
set_light turns the Optical Sensor’s LED on or off. This can help increase the sensor’s accuracy when detecting colors.
Usage:
optical_sensor.set_light(state)
Parameters |
Description |
|---|---|
state |
The state to set the LED to:
|
# Turn on the sensor's LED
optical_sensor.set_light(LEDStateType.ON)
set_light_power#
set_light_power sets the brightness of the Optical Sensor’s LED. If the LED’s brightness is set above 0 while it is off, it will automatically turn the LED on.
Usage:
optical_sensor.set_light_power(percent)
Parameters |
Description |
|---|---|
percent |
The brightness to set the LED to as a percent. |
units |
The unit to represent the brightness:
|
# Turn on the sensor's at half brightness
optical_sensor.set_light_power(50, PERCENT)
is_near_object#
is_near_object returns a Boolean indicating whether the sensor is detecting an object.
True– The Optical Sensor is detecting an object.False– The Optical Sensor is not detecting an object.
Usage:
optical_sensor.is_near_object()
Parameters |
Description |
|---|---|
This method has no parameters. |
# Drive forward until an object is found
drivetrain.drive(FORWARD)
while not optical_sensor.is_near_object():
pass
drivetrain.stop()
color#
color returns an RGB value corresponding to a predefined color. These can be compared to Color objects to create conditional statements.
Possible colors are:
Color.BLACKColor.WHITEColor.RED- A hue value between 340° - 20°Color.GREEN- A hue value between 80° - 140°Color.BLUE- A hue value between 200° - 240°Color.YELLOW- A hue value between 40° - 60°Color.ORANGE- A hue value between 20° - 40°Color.PURPLE- A hue value between 240° - 280°Color.CYAN- A hue value between 140° - 200°
Note: The Optical Sensor is looking for hue ranges that match the specified color. For detecting specific hue ranges, see hue.
Usage:
optical_sensor.color()
Parameters |
Description |
|---|---|
This method has no parameters. |
# Drive forward until red is found
drivetrain.drive(FORWARD)
while not optical_sensor.color() == Color.RED:
pass
drivetrain.stop()
brightness#
brightness returns the amount of light reflected from the object as a percent.
Usage:
optical_sensor.brightness()
Parameters |
Description |
|---|---|
This method has no parameters. |
hue#
hue returns the hue value of the detected color.
This value ranges from 0 to 359 degrees, which correlates to the color wheel:

Usage:
optical_sensor.hue
Parameters |
Description |
|---|---|
This method has no parameters. |
# Look for the color pink using hue
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
if 300 < optical_sensor.hue() < 359:
brain.screen.print("This is pink!")
else:
brain.screen.print("No pink detected!")
object_detected#
object_detected registers a function to be called whenever the Optical Sensor detects a new object.
Usage:
optical_sensor.object_detected(callback, arg)
Parameters |
Description |
|---|---|
|
A previously defined function that executes when the Optical Sensor detects a new object. |
|
Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information. |
object_lost#
object_lost registers a function to be called whenever the Optical Sensor loses a detected object.
Usage:
optical_sensor.object_lost(callback, arg)
Parameters |
Description |
|---|---|
|
A previously defined function that executes when the Optical Sensor loses a detected object. |
|
Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information. |
Constructor#
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)
Parameter |
Description |
|---|---|
|
The Smart Port that the Optical Sensor is connected to, written as |
# Create an Optical Sensor in Port 10
optical_sensor = Optical(Ports.PORT10)