Sensor de cor#

Introdução#

A classe colorsensor é utilizada para aceder aos dados do Sensor de Cor. Utiliza a luz refletida para detetar objetos, identificar cores e medir o brilho e a tonalidade.

Construtor de Classes#

colorsensor Color1 = colorsensor(index);

Destrutor de classes#

Destrói o objeto colorsensor e liberta os recursos associados.

virtual ~colorsensor();

Parâmetros#

Parâmetro

Tipo

Descrição

index

int32_t

A porta inteligente à qual o sensor de cor está ligado é escrita como PORTx, em que x é o número da porta (por exemplo, PORT1).

Exemplos#

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

Funções de membro#

A classe colorsensor inclui as seguintes funções membro:

  • setLight – Liga, desliga ou define um nível de brilho para o LED do sensor de cor.

  • isNearObject – Retorna se um objeto está perto ou não do sensor de cor.

  • detects – Retorna se uma cor especificada foi detectada ou não pelo sensor de cor.

  • colorname – Retorna o nome da cor detectada pelo sensor de cor.

  • brightness – Devolve o brilho detectado de um objecto.

  • hue – Devolve o valor de matiz detectado.

Antes de chamar qualquer função membro de colorsensor , deve ser criada uma instância de colorsensor , como se mostra abaixo:

/* 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#

Define a potência da luz LED do sensor de cor. Esta luz ajuda o sensor a detetar objetos e cores com mais clareza.

Se a luz do sensor de cor estiver desligada, definir a potência da luz acima de 0% fará com que esta se acenda.

Se a luz do sensor de cor estiver acesa, definir a potência da luz para 0% irá desligá-la.

Uma percentagem maior torna a luz mais brilhante. Uma percentagem mais baixa torna a luz mais fraca.

Available Functions

1 — Liga ou desliga o LED utilizando ledState.

void setLight( 
  ledState  state );

2 — Liga o LED com uma intensidade específica.

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

Parameters

Parâmetro

Tipo

Descrição

state

ledState

Liga ou desliga o LED. ledState::on liga o LED com 100% de brilho. ledState::off desliga o LED.

intensity

int32_t

O nível de potência para ajustar a luz varia de 0 a 100.

units

percentUnits

A unidade que representa a intensidade da luz: percent / pct%

Return Values

Esta função não devolve qualquer valor.

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

isNearObject#

Retorna se o sensor de cor detetou um objeto próximo.

Available Functions
bool  isNearObject();

Parameters

Esta função não aceita qualquer parâmetro.

Return Values

Esta função devolve um valor booleano indicando se foi detetado um objeto próximo:

  • true – O sensor de cor deteta um objeto.

  • false – O sensor de cor não detetou qualquer objeto.

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

detects#

Retorna se o sensor de cor está a detetar uma cor específica.

Available Functions

1 — Detects a colorType.

bool detects( 
  colorType  color );

2 — Detects a vex::color.

bool detects( 
  vex::color  color );

Parameters

Parâmetros

Tipo

Descrição

color

colorType

Uma cor válida:

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

color

vex::color

Uma cor personalizada válida, ou uma das cores predefinidas listadas acima.

Return Values
  • true – O sensor de cor deteta a cor.

  • false – O sensor de cor não detetou a cor.

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#

Retorna a cor correspondente mais próxima detetada.

Available Functions
colorType colorname();

Parameters

Esta função não aceita qualquer parâmetro.

Return Values

Quando impresso diretamente, mostra o valor numérico associado a essa cor:

Cor

Valor numérico

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
  • A função convertColorToString é criada automaticamente pelo VEXcode quando um sensor de cor é configurado na janela Dispositivos. Apenas está disponível em projetos VEXcode IQ e não funcionará noutros ambientes.

  • Quando se utiliza colorname fora do VEXcode, as comparações devem ser feitas diretamente com um valor colorType — qualquer cor que comece por colorType:: (por exemplo, colorType::green ou 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#

Devolve a quantidade de luz refletida pelo objeto.

Uma percentagem mais elevada significa que mais luz é refletida de volta para o sensor de cor. Uma percentagem mais baixa significa que menos luz é refletida de volta.

Available Functions
double  brightness(bool bRaw = false);

Parameters

Parâmetro

Tipo

Descrição

bRaw

bool

Um valor booleano para ler dados de brilho brutos em vez de percentagem. O predefinido é false.

Return Values

Um valor do tipo double que representa o brilho detetado pelo sensor de cor na gama de 0 a 100%, ou um valor do tipo double que representa os dados brutos detetados pelo 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#

Retorna a tonalidade detectada pelo sensor de cor.

O matiz é uma forma de descrever a cor utilizando números num círculo cromático.

A roda de cores VEX mostrando os graus de cores em torno de um círculo, com o vermelho a 0 graus e a transitar pelo arco-íris à medida que o valor aumenta.

Available Functions
double hue();

Parameters

Esta função não aceita qualquer parâmetro.

Return Values

Um número decimal que representa o valor da tonalidade detectada pelo sensor de cor no intervalo de 0 a 359,00.

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