Barevný senzor#

Zavedení#

Třída colorsensor se používá pro přístup k datům z Senzoru barev. Využívá odražené světlo k detekci objektů, identifikaci barev a měření jasu a odstínu.

Konstruktor třídy#

colorsensor Color1 = colorsensor(index);

Destruktor tříd#

Zničí objekt colorsensor a uvolní přidružené prostředky.

virtual ~colorsensor();

Parametry#

Parametr

Typ

Popis

index

int32_t

Inteligentní port, ke kterému je připojen barevný senzor, zapsaný jako PORTx, kde x je číslo portu (například PORT1).

Příklady#

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

Členské funkce#

Třída colorsensor obsahuje následující členské funkce:

  • setLight – Zapíná, vypíná nebo nastavuje jas LED diody barevného senzoru.

  • isNearObject – Vrací, zda se objekt nachází blízko senzoru barev.

  • detects – Vrací, zda senzor barev detekoval zadanou barvu.

  • colorname – Vrátí název barvy detekované senzorem barev.

  • brightness – Vrátí detekovaný jas objektu.

  • hue – Vrátí detekovanou hodnotu odstínu.

Před voláním jakékoli členské funkce colorsensor je nutné vytvořit instanci colorsensor , jak je znázorněno níže:

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

Nastavuje světelný výkon LED diody barevného senzoru. Světlo může pomoci barevnému senzoru jasněji detekovat objekty a barvy.

Pokud je světlo barevného senzoru vypnuté, nastavení výkonu světla nad 0 % světlo zapne.

Pokud svítí světlo barevného senzoru, nastavení výkonu světla na 0 % světlo vypne.

Vyšší procento světlo zesílí. Nižší procento světlo ztlumí.

Available Functions

1 — Zapíná nebo vypíná LED diodu pomocí ledState.

void setLight( 
  ledState  state );

2 — Rozsvítí LED diodu na určitou intenzitu.

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

Parameters

Parametr

Typ

Popis

state

ledState

Zapne nebo vypne LED. ledState::on zapne LED na 100% jas. ledState::off ji vypne.

intensity

int32_t

Úroveň výkonu pro nastavení světla od 0 do 100.

units

percentUnits

Jednotka, která vyjadřuje intenzitu světla: percent / pct — procenta

Return Values

Tato funkce nevrací hodnotu.

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

isNearObject#

Vrátí hodnotu, pokud senzor barev detekuje blízký objekt.

Available Functions
bool  isNearObject();

Parameters

Tato funkce nepřijímá žádné parametry.

Return Values

Tato funkce vrací booleovskou hodnotu, která indikuje, zda byl detekován blízký objekt:

  • true – Senzor barev detekuje objekt.

  • false – Senzor barev nedetekuje objekt.

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

detects#

Vrátí, pokud senzor barev detekuje zadanou barvu.

Available Functions

1 — Detects a colorType.

bool detects( 
  colorType  color );

2 — Detects a vex::color.

bool detects( 
  vex::color  color );

Parameters

Parametry

Typ

Popis

color

colorType

A valid color:

  • blue – Hue value between 196° and 229°
  • blue_green – Hue value between 140° and 195°
  • blue_violet – Hue value between 230° and 239°
  • green – Hue value between 84° and 139°
  • orange – Hue value between 21° and 30°
  • purple
  • red – Hue value between 350° and 14°
  • red_orange – Hue value between 15° and 20°
  • red_violet – Hue value between 281° and 350°
  • violet – Hue value between 240° and 280°
  • white
  • yellow – Hue value between 54° and 74°
  • yellow_green – Hue value between 75° and 83°
  • yellow_orange – Hue value between 31° and 53°

color

vex::color

Platná vlastní barva nebo jedna z výše uvedených předdefinovaných barev.

Return Values
  • true – Senzor barev detekuje barvu.

  • false – Senzor barev barvu nedetekuje.

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#

Vrátí nejbližší nalezenou odpovídající barvu.

Available Functions
colorType colorname();

Parameters

Tato funkce nepřijímá žádné parametry.

Return Values

Při přímém tisku se zobrazí číselná hodnota spojená s danou barvou:

Barva

Číselná hodnota

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 let

Notes
  • Funkce convertColorToString je automaticky vytvořena programem VEXcode, když je v okně Zařízení nakonfigurován senzor barev. Je k dispozici pouze v rámci projektů VEXcode IQ a v jiných prostředích nebude fungovat.

  • Při použití hodnoty colorname mimo VEXcode by se porovnání měla provádět přímo s hodnotou colorType – s jakoukoli barvou, která začíná na colorType:: (například colorType::green nebo 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#

Vrátí množství světla odraženého od objektu.

Vyšší procento znamená, že se zpět k barevnému senzoru odráží více světla. Nižší procento znamená, že se zpět odráží méně světla.

Available Functions
double  brightness(bool bRaw = false);

Parameters

Parametr

Typ

Popis

bRaw

bool

Logická hodnota pro čtení nezpracovaných dat jasu namísto procent. Výchozí hodnota je false.

Return Values

Dvojitá hodnota představující jas detekovaný barevným senzorem v rozsahu 0–100 % nebo dvojitá hodnota představující nezpracovaná data detekovaná senzorem.

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#

Vrátí odstín detekovaný barevným senzorem.

Odstín je způsob, jak popsat barvu pomocí čísel v barevném kruhu.

Barevný kruh VEX zobrazující stupně barev kolem kruhu, s červenou na 0 stupních a přechodem do duhy s rostoucí hodnotou.

Available Functions
double hue();

Parameters

Tato funkce nepřijímá žádné parametry.

Return Values

Dvojitá hodnota představující hodnotu odstínu detekovaného senzorem barev v rozsahu 0 — 359,00.

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