Оптичний датчик#

Вступ#

Клас optical використовується для доступу до даних з оптичного датчика. Він використовує відбите світло для виявлення об’єктів, ідентифікації кольорів та вимірювання яскравості й відтінку.

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

optical Optical = optical(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 — Повертає, чи виявляє оптичний датчик об’єкт у межах досяжності.

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

  • 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 object in Port 1
optical Optical1 = optical(PORT1);

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

Одиниця вимірювання інтенсивності світла: percent pct — відсотки

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");
}

colorname#

Повертає колір, виявлений оптичним датчиком, на основі виявленого значення відтінку.

Available Functions
vex::colorType  colorname();

Parameters

Ця функція не приймає жодних параметрів.

Return Values

Колір, виявлений оптичним датчиком як екземпляр класу кольорів.

Можливі кольори:

  • blue – значення відтінку між 196° та 229°

  • blue_green – значення відтінку між 140° та 195°

  • blue_violet – значення відтінку між 230° та 239°

  • green – значення відтінку між 84° та 139°

  • orange – значення відтінку між 21° та 30°

  • red – значення відтінку між 350° та 14°

  • red_orange – значення відтінку між 15° та 20°

  • red_violet – значення відтінку між 281° та 350°

  • violet – значення відтінку між 240° та 280°

  • yellow – значення відтінку між 54° та 74°

  • yellow_green – значення відтінку між 75° та 83°

  • yellow_orange – значення відтінку між 31° та 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#

Повертає кількість світла, що відбивається назад до оптичного датчика.

Вищий відсоток означає, що більше світла відбивається назад до оптичного датчика. Нижчий відсоток означає, що менше світла відбивається назад.

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,00.

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);
}