Óptico#

Introducción#

El sensor óptico proporciona métodos para obtener datos de diferentes objetos. Esto permite al cerebro detectar colores, así como su tono y brillo.

For the examples below, the configured Optical Sensor will be named Optical1 and will be used in all subsequent examples throughout this API documentation when referring to optical class methods.

A continuación se muestra una lista de todos los métodos disponibles:

Acciones – Detectar objetos con el sensor óptico.

  • objectDetected – Registers a function to call when the Optical Sensor detects an object.

  • objectLost – Registers a function to call when the Optical Sensor loses an object.

Mutadores: modifican las luces del sensor óptico y los rangos de detección.

  • setLight – Turns the Optical Sensor’s LED on or off.

  • setLightPower – Sets the Optical Sensor’s LED to a specific brightness.

  • objectDetectThreshold – Sets the distance an object has to be from the Optical Sensor for it to be detected.

Getters: devuelven datos de objetos con el sensor óptico.

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

  • color – Return the detected color as a predefined color object.

  • brightness – Returns the detected brightness of an object.

  • hue – Returns the detected hue value as a float from 0 to 359.99 degrees.

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

Constructores – Inicializan manualmente el sensor óptico.

  • optical – Create an Optical Sensor.

Comportamiento#

objectDetected#

objectDetected registers a function to be called when the Optical Sensor detects an object.

Usage:
Optical1.objectDetected(callback);

Parámetros

Descripción

callback

Una función que se define previamente para ejecutarse cuando el sensor óptico detecta un objeto.

// Display a message when an object is detected
void onObjectDetected() {
  Brain.Screen.print("Object detected!");
}

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

  // Call onObjectDetected when an object is detected
  Optical1.objectDetected(onObjectDetected);
}

objectLost#

objectLost registers a function to be called when the Optical Sensor loses a detected object.

Usage:
Optical1.objectLost(callback);

Parámetros

Descripción

callback

Una función que se define previamente para ejecutarse cuando el sensor óptico pierde un objeto.

// Display a message when an object is lost
void onObjectLost() {
  Brain.Screen.print("Object lost!");
}

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

  // Call onObjectLost when an object is lost
  Optical1.objectLost(onObjectLost);

  // Keep the program running
  while (true) {
    wait(20, msec);
  }
}

Mutadores#

setLight#

setLight turns the Optical Sensor’s LED lights on or off.

Usage:
Optical1.setLight(state);

Parámetros

Descripción

state

The state to set the LED lights to:

  • ledState::off
  • ledState::on
int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Blink the Optical Sensor LED on and off
  while (true) {
    Optical1.setLight(ledState::on);
    wait(0.5, seconds);
    Optical1.setLight(ledState::off);
    wait(0.5, seconds);
  }
}

setLightPower#

setLightPower sets the specific brightness of the Optical Sensor’s LED lights.

Usage:
Optical1.setLightPower(power, units);

Parámetros

Descripción

power

El brillo de las luces LED se establecerá entre 0 y 100.

units

The units that represent the LED brightness:

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

  // Set the Optical Sensor LED to 25% power
  Optical1.setLightPower(25, percent);
  wait(1, seconds);

  // Set the LED to 75% power
  Optical1.setLightPower(75, percent);
  wait(1, seconds);

  // Turn the LED off
  Optical1.setLightPower(0, percent);
}

objectDetectThreshold#

objectDetectThreshold sets the distance away an object must be before the Optical Sensor will detect it.

Usage:
Optical1.objectDetectThreshold(value);

Parámetros

Descripción

value

El nuevo umbral de detección como un número entero de 0 a 255. Un valor de 0 significa que no hay cambios en el umbral.

Captadores#

isNearObject#

isNearObject returns a Boolean indicating whether or not the Optical Sensor detects a close object.

  • 1 – The Optical Sensor detects a close object.

  • 0 – The Optical Sensor does not detect a close object.

Usage:
Optical1.isNearObject()

Parámetros

Descripción

Este método no tiene parámetros.

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

  // Continuously check for nearby objects
  while (true) {
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);

    if (Optical1.isNearObject()) {
      Brain.Screen.print("Object close!");
    } else {
      Brain.Screen.print("No object");
    }

    wait(0.25, seconds);
  }
}

color#

color returns the detected color from the Optical Sensor as an instance of a predefined color object, as shown below:

  • red

  • green

  • blue

  • white

  • yellow

  • orange

  • purple

  • cyan

  • red_violet

  • violet

  • blue_violet

  • blue_green

  • yellow_green

  • yellow_orange

  • red_orange

  • black

  • transparent

Usage:
Optical1.color()

Parámetros

Descripción

Este método no tiene parámetros.

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

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

    // Compare the color with "green"
    if (convertColorToString(Optical1.color()) == "green") {
      Brain.Screen.print("Green object!");
    } else {
      Brain.Screen.print("Not green");
    }

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

Note: The function convertColorToString is automatically created by VEXcode when an Optical Sensor is configured in the Devices window. It is only available inside VEXcode IQ (2nd gen) projects and will not work in other environments.

When using color 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).

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

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

    // Compare the color with the colorType
    if (Optical1.color() == colorType::green) {
      Brain.Screen.print("Green object!");
    } else {
      Brain.Screen.print("Not green");
    }

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

brightness#

brightness returns the brightness value from the Optical Sensor as a double from 0 to 100.

Usage:
Optical1.brightness()

Parámetros

Descripción

Este método no tiene parámetros.

hue#

hue returns the hue value detected by the Optical Sensor as a double from 0 to 359.99.

Usage:
Optical1.hue()

Parámetros

Descripción

Este método no tiene parámetros.

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

  // Continuously show hue readings
  while (true) {
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    
    Brain.Screen.print("Hue: %f", Optical1.hue());

    wait(0.25, seconds);
  }
}

installed#

installed returns a Boolean indicating whether the Optical Sensor is currently connected to the Brain.

  • 1 – The Optical Sensor is connected to the Brain.

  • 0 – The Optical Sensor is not connected to the Brain.

Usage:
Optical1.installed()

Parámetros

Descripción

Este método no tiene parámetros.

Constructores#

optical#

optical creates an object of the optical Class in the specified port.

Usage:
optical Optical1 = optical(port);

Parámetro

Descripción

port

Which Smart Port that the Optical Sensor is connected to as PORT followed by the port number, ranging from 1 to 12.

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

  // Create an Optical Sensor in Port 1
  optical CustomOptical = optical(PORT1);
}