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

Вступ#

Оптичний клас 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

Одиниця вимірювання інтенсивності світла: 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");
}

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, що представляє яскравість, виявлену оптичним датчиком, як число 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);
}