Color Sensor#

Introduction#

The colorsensor class is used to access data from the Color Sensor. It uses reflected light to detect objects, identify colors, and measure brightness and hue.

Class Constructor#

colorsensor Color1 = colorsensor(index);

Class Destructor#

Destroys the colorsensor object and releases associated resources.

virtual ~colorsensor();

Parameters#

Parameter

Type

Description

index

int32_t

The Smart Port that the Color Sensor is connected to, written as PORTx, where x is the port number (for example, PORT1).

Examples#

// Create an colorsensor instance in Port 1
colorsensor Color1 = colorsensor(PORT1);

Member Functions#

The colorsensor class includes the following member functions:

  • setLight – Turns the Color Sensor’s LED on, off, or to a set brightness level.

  • isNearObject – Returns whether or not an object is close to the Color Sensor.

  • detects – Returns whether or not a specified color is detected by the Color Sensor.

  • colorname – Returns the name of the color detected by the Color Sensor.

  • brightness – Returns the detected brightness of an object.

  • hue – Returns the detected hue value.

Before calling any colorsensor member functions, an colorsensor instance must be created, as shown below:

/* This constructor is required when using VS Code.
Color Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create an colorsensor instance in Port 1
colorsensor Color1 = colorsensor(PORT1);

setLight#

Sets the light power of the Color Sensor’s LED. The light can help the Color Sensor detect objects and colors more clearly.

If the Color Sensor’s light is off, setting the light power above 0% will turn the light on.

If the Color Sensor’s light is on, setting the light power at 0% will turn the light off.

A higher percentage makes the light brighter. A lower percentage makes the light dimmer.

Available Functions

1 Turns the led on or off using ledState.

void setLight( 
  ledState  state );

2 Turns the led on to a specific intensity.

void setLight( 
  int32_t      intensity, 
  percentUnits units = percent );

Parameters

Parameter

Type

Description

state

ledState

Sets the LED on or off. ledState::off turns the LED on at 100% brightness. ledState::on turns it off.

intensity

int32_t

The power level to set the light from 0 – 100.

units

percentUnits

The unit that represents the light intensity: percent / pct — percent

Return Values

This function does not return a value.

Examples
// Set the light power to 50 percent.
Color1.setLight(50, percent);

isNearObject#

Returns if the Color Sensor detects a nearby object.

Available Functions
bool  isNearObject();

Parameters

This function does not accept any parameters.

Return Values

This function returns a Boolean indicating if a nearby object is detected:

  • true – The Color Sensor detects an object.

  • false – The Color Sensor does not detect an object.

Examples
// If an object is detected by the Color Sensor, print
// "near object".
if (Color1.isNearObject()){
  Brain.Screen.print("near object");
}

detects#

Returns if the Color Sensor is detecting a specified color.

Available Functions

1 Detects a colorType.

bool detects( 
  colorType  color );

2 Detects a vex::color.

bool detects( 
  vex::color  color );

Parameters

Parameters

Type

Description

color

colorType

A valid color:

  • blue – Hue value between 196° and 229°
  • blue_green – Hue value between 140° and 195°
  • blue_violet – Hue value between 230° and 239°
  • green – Hue value between 84° and 139°
  • orange – Hue value between 21° and 30°
  • purple
  • red – Hue value between 350° and 14°
  • red_orange – Hue value between 15° and 20°
  • red_violet – Hue value between 281° and 350°
  • violet – Hue value between 240° and 280°
  • white
  • yellow – Hue value between 54° and 74°
  • yellow_green – Hue value between 75° and 83°
  • yellow_orange – Hue value between 31° and 53°

color

vex::color

A valid custom color, or one of the predefined colors listed above.

Return Values
  • true – The Color Sensor detects the color.

  • false – The Color Sensor does not detect the color.

Examples
int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Drive until a red object is seen
  Drivetrain.drive(forward);
  while (true) {
    if (Color1.detects(red)) {
      Drivetrain.stop();
      break;
    }
    wait(0.5, seconds);
  }
}

colorname#

Returns the closest matching color detected.

Available Functions
colorType colorname();

Parameters

This function does not accept any parameters.

Return Values

When printed directly, it shows the numeric value associated with that color:

Color

Numeric Value

none

0

red

1

green

2

blue

3

white

4

yellow

5

orange

6

purple

7

cyan

8

red_violet

9

violet

10

blue_violet

11

blue_green

12

yellow_green

13

yellow_orange

14

red_orange

15

black

16

transparent

17

Notes
  • The function convertColorToString is automatically created by VEXcode when a Color Sensor is configured in the Devices window. It is only available inside VEXcode IQ projects and will not work in other environments.

  • When using colorname outside of VEXcode, comparisons should be made directly with a colorType value — any color that begins with colorType:: (for example, colorType::green or colorType::red).

Examples
int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Continuously check the detected color
  while (true) {

    // Compare the color name with "red"
    if (convertColorToString(Color1.colorname()) == "red") {
      Brain.Screen.print("Red object!");
    } else {
      Brain.Screen.print("Not red");
    }

    wait(0.5, seconds);
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
  }
}

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Continuously check the detected color
  while (true) {

    // Compare the color name with the colorType
    if (Color1.colorname() == colorType::red) {
      Brain.Screen.print("Red object!");
    } else {
      Brain.Screen.print("Not red");
    }

    wait(0.5, seconds);
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
  }
}

brightness#

Returns the amount of light reflected from the object.

A higher percentage means more light is reflected back to the Color Sensor. A lower percentage means less light is reflected back.

Available Functions
double  brightness(bool bRaw = false);

Parameters

Parameter

Type

Description

bRaw

bool

A Boolean value to read raw brightness data instead of percentage. The default is false.

Return Values

A double representing the brightness detected by the Color Sensor in the range 0 - 100%, or a double representing the raw data detected by the sensor.

Examples
// Set a variable, brightness, to the value of the brightness
// detected by the Color Sensor
double brightness = Color1.brightness();

// Print the brightness detected by the Color Sensor to the
// Brain's screen
Brain.Screen.print(brightness);

hue#

Returns the hue detected by the Color Sensor.

Hue is a way to describe color using numbers around a color wheel.

The VEX Color Wheel showing the degrees of colors around a circle, with red at 0 degrees and transitioning through the rainbow as the value increases.

Available Functions
double hue();

Parameters

This function does not accept any parameters.

Return Values

A double representing the value of the hue detected by the Color Sensor in the range 0 — 359.00.

Examples
// Set a variable, hue, to the value of the hue detected
// by the Color Sensor.
double hue = Color1.hue();