Цветовой датчик#

Введение#

Класс colorsensor используется для доступа к данным от датчика цвета. Он использует отраженный свет для обнаружения объектов, определения цветов, а также измерения яркости и оттенка.

Конструктор класса#

colorsensor Color1 = colorsensor(index);

Деструктор класса#

Уничтожает объект colorsensor colorsensor и освобождает связанные с ним ресурсы.

virtual ~colorsensor();

Параметры#

Параметр

Тип

Описание

index

int32_t

Интеллектуальный порт, к которому подключен датчик цвета, обозначается как PORTx, где x — номер порта (например, PORT1).

Примеры#

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

Функции участников#

Класс colorsensor включает следующие функции-члены:

  • setLight – Включает, выключает или устанавливает заданный уровень яркости светодиода датчика цвета.

  • isNearObject – Возвращает значение, указывающее, находится ли объект близко к датчику цвета.

  • detects – Возвращает значение, указывающее, обнаружен ли указанный цвет датчиком цвета.

  • colorname – Возвращает название цвета, обнаруженного датчиком цвета.

  • brightness – Возвращает обнаруженную яркость объекта.

  • hue – Возвращает обнаруженное значение оттенка.

Перед вызовом любых функций-членов colorsensor необходимо создать экземпляр colorsensor , как показано ниже:

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

Устанавливает мощность светодиода датчика цвета. Подсветка помогает датчику цвета более четко распознавать объекты и цвета.

Если подсветка датчика цвета выключена, установка мощности подсветки выше 0% включит её.

Если индикатор датчика цвета включен, установка мощности подсветки на 0% выключит его.

Чем выше процентное значение, тем ярче свет. Чем ниже процентное значение, тем тусклее свет.

Available Functions

1 — Включает или выключает светодиод, используя ledState.

void setLight( 
  ledState  state );

2 — Включает светодиод с определенной интенсивностью.

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

Parameters

Параметр

Тип

Описание

state

ledState

Включает или выключает светодиод. ledState::on включает светодиод на 100% яркости. ledState::off выключает его.

intensity

int32_t

Уровень мощности для регулировки яркости света варьируется от 0 до 100.

units

percentUnits

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

Return Values

Эта функция не возвращает значения.

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

isNearObject#

Возвращает значение, если датчик цвета обнаруживает находящийся поблизости объект.

Available Functions
bool  isNearObject();

Parameters

Эта функция не принимает никаких параметров.

Return Values

Эта функция возвращает логическое значение, указывающее, обнаружен ли находящийся поблизости объект:

  • true – Цветовой датчик обнаруживает объект.

  • false – Цветовой датчик не обнаруживает объект.

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

detects#

Возвращает значение, если датчик цвета обнаруживает указанный цвет.

Available Functions

1 — Detects a colorType.

bool detects( 
  colorType  color );

2 — Detects a vex::color.

bool detects( 
  vex::color  color );

Parameters

Параметры

Тип

Описание

color

colorType

Допустимые цвета:

  • blue – Оттенок от 196° до 229°
  • blue_green – Оттенок от 140° до 195°
  • blue_violet – Оттенок от 230° до 239°
  • green – Оттенок от 84° до 139°
  • orange – Оттенок от 21° до 30°
  • purple
  • red – Оттенок от 350° до 14°
  • red_orange – Оттенок от 15° до 20°
  • red_violet – Оттенок от 281° до 350°
  • violet – Оттенок от 240° до 280°
  • white
  • yellow – Оттенок от 54° до 74°
  • yellow_green – Оттенок от 75° до 83°
  • yellow_orange – Оттенок от 31° до 53°

color

vex::color

Допустимый пользовательский цвет или один из предопределенных цветов, перечисленных выше.

Return Values
  • true – Датчик цвета определяет цвет.

  • false – Датчик цвета не определяет цвет.

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#

Возвращает наиболее близкий найденный цвет.

Available Functions
colorType colorname();

Parameters

Эта функция не принимает никаких параметров.

Return Values

При прямой печати отображается числовое значение, соответствующее данному цвету:

Цвет

Числовое значение

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
  • Функция convertColorToString convertColorToString автоматически создается VEXcode при настройке датчика цвета в окне «Устройства». Она доступна только в проектах VEXcode IQ и не будет работать в других средах.

  • При использовании colorname вне VEXcode сравнение следует проводить непосредственно со значением colorType colorType начинающимся с colorType:: (например, colorType:: colorType::green или 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#

Возвращает количество света, отраженного от объекта.

Более высокий процент означает, что больше света отражается обратно к датчику цвета. Более низкий процент означает, что отражается меньше света.

Available Functions
double  brightness(bool bRaw = false);

Parameters

Параметр

Тип

Описание

bRaw

bool

Логическое значение для чтения необработанных данных о яркости вместо процентов. Значение по умолчанию: false.

Return Values

Число типа double, представляющее яркость, обнаруженную цветовым датчиком в диапазоне 0–100%, или число типа double, представляющее необработанные данные, полученные датчиком.

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#

Возвращает оттенок, определенный цветовым датчиком.

Оттенок — это способ описания цвета с помощью чисел на цветовом круге.

Цветовой круг VEX, показывающий градусы цветов по кругу, где красный цвет находится на отметке 0 градусов, а затем происходит переход по радуге по мере увеличения значения.

Available Functions
double hue();

Parameters

Эта функция не принимает никаких параметров.

Return Values

Число типа double, представляющее значение оттенка, обнаруженного датчиком цвета, в диапазоне от 0 до 359,00.

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