Оптический датчик#

Введение#

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

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

optical(
    int32_t index );

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

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

virtual ~optical();

Параметры#

Параметр

Тип

Описание

index

int32_t

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

Примеры#

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

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

В класс оптических устройств optical входят следующие функциональные элементы:

  • setLight — Включает или выключает светодиод оптического датчика.

  • setLightPower — Устанавливает уровень мощности света оптического датчика.

  • isNearObject — Возвращает значение, указывающее, обнаружил ли оптический датчик объект в пределах досягаемости.

  • color — Возвращает цвет, обнаруженный оптическим датчиком.

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

  • hue — Возвращает оттенок, обнаруженный оптическим датчиком.

  • objectDetected — Регистрирует функцию, которая будет вызвана, когда оптический датчик обнаружит объект.

  • objectLost — Регистрирует функцию, которая будет вызываться, когда оптический датчик потеряет объект.

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

/* 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 instance
optical Optical1 = optical(
    PORT1);   // Smart Port 1

setLight#

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

Available Functions
void  setLight(ledState state);

Parameters

Параметр

Тип

Описание

state

ledState

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

Return Values

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

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

setLightPower#

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

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

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

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

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

Parameters

Параметр

Тип

Описание

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

isNearObject#

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

Available Functions
bool  isNearObject();

Parameters

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

Return Values

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

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

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

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

color#

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

Available Functions
vex::color  color();

Parameters

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

Return Values

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

Возможные цвета:

  • black

  • white

  • red - Оттенок в диапазоне от 340° до 20°

  • green - Оттенок от 80° до 140°

  • blue - Оттенок от 200° до 240°

  • yellow - Оттенок от 40° до 60°

  • orange - Оттенок от 20° до 40°

  • purple - Оттенок в диапазоне от 240° до 280°

  • cyan - Оттенок в диапазоне от 140° до 200°

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

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

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 Optical Sensor
double brightness = Optical.brightness();

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

hue#

Возвращает значение оттенка обнаруженного цвета.

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

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

Available Functions
double hue();

Parameters

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

Return Values

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

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

objectDetected#

Регистрирует функцию обратного вызова, которая срабатывает при обнаружении объекта.

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

Parameters

Параметр

Тип

Описание

callback

void (*)(void)

Ранее определенная функция, которая выполняется, когда оптический датчик обнаруживает новый объект.

Return Values

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

Examples

Определите функцию обратного вызова (вне 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");
}

Зарегистрируйте функцию обратного вызова внутри 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#

Регистрирует функцию обратного вызова на случай потери объекта.

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

Parameters

Параметр

Тип

Описание

callback

void (*)(void)

Ранее определенная функция, которая выполняется, когда оптический датчик теряет обнаруженный объект.

Return Values

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

Examples

Определите функцию обратного вызова (вне 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");
}

Зарегистрируйте функцию обратного вызова внутри 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);
}