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 |
|---|---|---|
|
|
A porta inteligente à qual o sensor de cor está ligado é escrita como |
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 Functions1 — Liga ou desliga o LED utilizando
ledState.void setLight( ledState state );
Parameters2 — Liga o LED com uma intensidade específica.
void setLight( int32_t intensity, percentUnits units = percent );
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Liga ou desliga o LED. |
|
|
O nível de potência para ajustar a luz varia de 0 a 100. |
|
|
A unidade que representa a intensidade da luz: |
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 Functionsbool isNearObject();
Esta função não aceita qualquer parâmetro.
Return ValuesEsta 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.
// 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 Functions1 — Detects a
colorType.bool detects( colorType color );
Parameters2 — Detects a
vex::color.bool detects( vex::color color );
Parâmetros |
Tipo |
Descrição |
|---|---|---|
|
|
Uma cor válida:
|
|
|
Uma cor personalizada válida, ou uma das cores predefinidas listadas acima. |
true– O sensor de cor deteta a cor.false– O sensor de cor não detetou a cor.
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 FunctionscolorType colorname();
Esta função não aceita qualquer parâmetro.
Return ValuesQuando impresso diretamente, mostra o valor numérico associado a essa cor:
Cor |
Valor numérico |
|---|---|
|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
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
colornamefora do VEXcode, as comparações devem ser feitas diretamente com um valorcolorType— qualquer cor que comece porcolorType::(por exemplo,colorType::greenoucolorType::red).
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 Functionsdouble brightness(bool bRaw = false);
Parâmetro |
Tipo |
Descrição |
|---|---|---|
|
|
Um valor booleano para ler dados de brilho brutos em vez de percentagem. O predefinido é |
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.

double hue();
Esta função não aceita qualquer parâmetro.
Return ValuesUm 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();