Датчик кольору#

Вступ#

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

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

colorsensor Color1 = colorsensor(index);

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

Знищує об’єкт 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

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

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 автоматично створюється VEXcode, коли датчик кольору налаштовано у вікні «Пристрої». Вона доступна лише всередині проектів VEXcode IQ і не працюватиме в інших середовищах.

  • Під час використання colorname поза VEXcode, порівняння слід проводити безпосередньо зі значенням 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

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

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