Sensor óptico#

Introdução#

A classe óptica optical é utilizada para aceder aos dados do Sensor Óptico. Utiliza a luz refletida para detetar objetos, identificar cores e medir o brilho e a tonalidade.

Construtor de Classes#

optical Optical = optical(index);

Destrutor de classes#

Destrói o objeto ótico optical e liberta os recursos associados.

virtual ~optical();

Parâmetros#

Parâmetro

Tipo

Descrição

index

int32_t

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

Exemplos#

// Create an optical instance in Port 1
optical Optical1 = optical(PORT1);

Funções de membro#

A classe óptica optical inclui as seguintes funções membro:

  • setLight — Liga ou desliga o LED do sensor óptico.

  • setLightPower — Define o nível de potência luminosa do sensor ótico.

  • isNearObject — Retorna se o sensor ótico detetou ou não um objeto dentro do alcance.

  • colorname — Returns the color detected by the Optical Sensor.

  • brightness — Devolve a quantidade de luz reflectida pelo objecto.

  • hue — Devolve a matiz detectada pelo sensor óptico.

  • objectDetected — Regista uma função a ser chamada quando o Sensor Óptico detecta um objecto.

  • objectLost — Regista uma função a ser chamada quando o Sensor Óptico perde um objecto.

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

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

// Create an optical object in Port 1
optical Optical1 = optical(PORT1);

setLight#

Liga ou desliga o LED do sensor ótico. A luz pode ajudar o sensor ótico a detetar objetos e cores com maior clareza.

Available Functions
void  setLight(ledState state);

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.

Return Values

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

Examples
// Turn on LED with previous intensity.
Optical.setLight(ledState::on);

setLightPower#

Define a intensidade da luz do sensor ótico. Esta luz pode ajudar o sensor ótico a detetar objetos e cores com maior clareza.

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

Se a luz do sensor ótico estiver apagada, definir a potência da luz acima de 0% irá acendê-la.

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

Available Functions
void setLightPower( 
      int32_t      intensity, 
      percentUnits units = percent );

Parameters

Parâmetro

Tipo

Descrição

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.
Optical.setLightPower(50, percent);

isNearObject#

Retorna se o sensor ótico detetou ou não um objeto dentro do alcance.

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 — Foi detectado um objecto nas proximidades.

  • false — Não foi detetado nenhum objeto.

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

colorname#

Retorna a cor detectada pelo sensor óptico, com base no valor de matiz detectado.

Available Functions
vex::colorType  colorname();

Parameters

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

Return Values

A cor detectada pelo sensor óptico como uma instância da classe de cor.

As cores possíveis são:

  • 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°

  • 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°

  • 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°

Examples
// Set a variable, detectColor, to the color detected by the
// Optical Sensor
colorType detectColor = Optical.colorname();

// Print the color detected by the Optical Sensor
// to the Brain's screen
Brain.Screen.print(detectColor);

brightness#

Indica a quantidade de luz refletida de volta para o sensor ótico.

Uma percentagem mais elevada significa que mais luz é refletida de volta para o sensor ótico. 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 ótico 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 Optical Sensor
double brightness = Optical.brightness();

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

hue#

Retorna a tonalidade detectada pelo sensor óptico.

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

A roda de cores VEX que mostra os graus de cor em torno de um círculo, com o vermelho a 0 graus e a passar 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 óptico no intervalo de 0 a 359,00.

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

objectDetected#

Regista uma função de retorno de chamada para quando um objeto é detetado.

Available Functions
void objectDetected(void (* callback)(void));

Parameters

Parâmetro

Tipo

Descrição

callback

void (*)(void)

Uma função previamente definida que é executada quando o Sensor Óptico deteta um novo objeto.

Return Values

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

Examples

Defina a função de callback (fora de int main())

// Called when the Optical Sensor detects an object
void detected() {
  // The Brain will print that the Optical Sensor detected an
  // object to the Brain's screen.
  Brain.Screen.print("object detected");
}

Registe o callback dentro de int main()

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Run when the Optical Sensor detects an object.
  Optical.objectDetected(detected);
}

objectLost#

Regista uma função de retorno de chamada para quando um objeto é perdido.

Available Functions
void objectLost(void (* callback)(void));

Parameters

Parâmetro

Tipo

Descrição

callback

void (*)(void)

Uma função previamente definida que é executada quando o sensor óptico perde um objecto detectado.

Return Values

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

Examples

Defina a função de callback (fora de int main())

// Called when the Optical Sensor loses an object
void lost() {
  // The Brain will print that the Optical Sensor lost an
  // object to the Brain's screen.
  Brain.Screen.print("object lost");
}

Registe o callback dentro de int main()

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Run lost when the Optical Sensor loses an object.
  Optical.objectLost(lost);
}