Czujnik koloru#

Wstęp#

Klasa colorsensor służy do dostępu do danych z Czujnika kolorów. Wykorzystuje ona światło odbite do wykrywania obiektów, identyfikacji kolorów oraz pomiaru jasności i odcienia.

Konstruktor klasy#

colorsensor Color1 = colorsensor(index);

Destruktor klasy#

Niszczy obiekt colorsensor i uwalnia powiązane zasoby.

virtual ~colorsensor();

Parametry#

Parametr

Typ

Opis

index

int32_t

Inteligentny port, do którego podłączony jest czujnik koloru, zapisany jako PORTx, gdzie x to numer portu (na przykład PORT1).

Przykłady#

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

Funkcje członkowskie#

Klasa colorsensor zawiera następujące funkcje członkowskie:

  • setLight – Włącza, wyłącza lub ustawia jasność diody LED czujnika koloru na określony poziom.

  • isNearObject – Zwraca informację, czy obiekt znajduje się blisko czujnika koloru.

  • detects – Zwraca informację, czy określony kolor został wykryty przez czujnik koloru.

  • colorname – Zwraca nazwę koloru wykrytego przez czujnik koloru.

  • brightness – Zwraca wykrytą jasność obiektu.

  • hue – Zwraca wykrytą wartość odcienia.

Przed wywołaniem jakiejkolwiek funkcji członkowskiej colorsensor należy utworzyć instancję colorsensor , jak pokazano poniżej:

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

Ustawia moc światła diody LED czujnika koloru. Światło może pomóc czujnikowi koloru wyraźniej wykrywać obiekty i kolory.

Jeśli światło czujnika koloru jest wyłączone, ustawienie mocy światła powyżej 0% spowoduje włączenie światła.

Jeśli światło czujnika koloru jest włączone, ustawienie mocy światła na 0% spowoduje wyłączenie światła.

Wyższy procent sprawia, że ​​światło jest jaśniejsze. Niższy procent sprawia, że ​​światło jest ciemniejsze.

Available Functions

1 — Włącza lub wyłącza diodę LED za pomocą ledState.

void setLight( 
  ledState  state );

2 — Włącza diodę LED o określonej intensywności.

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

Parameters

Parametr

Typ

Opis

state

ledState

Włącza lub wyłącza diodę LED. ledState::on włącza diodę LED z jasnością 100%. ledState::off wyłącza ją.

intensity

int32_t

Poziom mocy umożliwiający ustawienie światła od 0 do 100.

units

percentUnits

Jednostka oznaczająca natężenie światła: percent / pct — procent

Return Values

Ta funkcja nie zwraca wartości.

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

isNearObject#

Zwraca wartość, jeśli czujnik koloru wykryje pobliski obiekt.

Available Functions
bool  isNearObject();

Parameters

Ta funkcja nie przyjmuje żadnych parametrów.

Return Values

Funkcja ta zwraca wartość logiczną wskazującą, czy w pobliżu wykryto obiekt:

  • true – Czujnik koloru wykrywa obiekt.

  • false – Czujnik koloru nie wykrył obiektu.

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

detects#

Zwraca wartość wskazującą, czy czujnik kolorów wykrywa określony kolor.

Available Functions

1 — Detects a colorType.

bool detects( 
  colorType  color );

2 — Detects a vex::color.

bool detects( 
  vex::color  color );

Parameters

Parametry

Typ

Opis

color

colorType

Prawidłowy kolor:

  • blue – Wartość odcienia między 196° i 229°
  • blue_green – Wartość odcienia między 140° i 195°
  • blue_violet – Wartość odcienia między 230° i 239°
  • green – Wartość odcienia między 84° i 139°
  • orange – Wartość odcienia między 21° i 30°
  • purple
  • red – Wartość odcienia między 350° i 14°
  • red_orange – Wartość odcienia między 15° i 20°
  • red_violet – Wartość odcienia między 281° i 350°
  • violet – Wartość odcienia między 240° i 280°
  • white
  • yellow – Wartość odcienia między 54° i 74°
  • yellow_green – Wartość odcienia między 75° i 83°
  • yellow_orange – Wartość odcienia między 31° i 53°

color

vex::color

Prawidłowy kolor niestandardowy lub jeden z predefiniowanych kolorów wymienionych powyżej.

Return Values
  • true – Czujnik koloru wykrywa kolor.

  • false – Czujnik koloru nie wykrywa koloru.

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#

Zwraca najbardziej zbliżony wykryty kolor.

Available Functions
colorType colorname();

Parameters

Ta funkcja nie przyjmuje żadnych parametrów.

Return Values

Po wydrukowaniu bezpośrednio wyświetla wartość liczbową przypisaną danemu kolorowi:

Kolor

Wartość liczbowa

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
  • Funkcja convertColorToString jest automatycznie tworzona przez VEXcode po skonfigurowaniu czujnika koloru w oknie Urządzenia. Jest ona dostępna tylko w projektach VEXcode IQ i nie będzie działać w innych środowiskach.

  • W przypadku używania wartości colorname poza kodem VEXcode, porównania należy wykonywać bezpośrednio z wartością colorType — dowolnym kolorem zaczynającym się od colorType:: (na przykład colorType::green lub 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#

Zwraca ilość światła odbitego od obiektu.

Wyższy procent oznacza, że ​​więcej światła odbija się z powrotem do czujnika koloru. Niższy procent oznacza, że ​​mniej światła odbija się z powrotem.

Available Functions
double  brightness(bool bRaw = false);

Parameters

Parametr

Typ

Opis

bRaw

bool

Wartość logiczna do odczytu surowych danych o jasności zamiast wartości procentowej. Wartość domyślna to false.

Return Values

Wartość podwójna oznacza jasność wykrytą przez czujnik koloru w zakresie 0–100% lub wartość podwójna oznacza surowe dane wykryte przez czujnik.

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#

Zwraca odcień wykryty przez czujnik koloru.

Odcień to sposób opisywania koloru za pomocą liczb znajdujących się na kole barw.

Koło kolorów VEX przedstawiające stopnie kolorów wokół okręgu, przy czym czerwony znajduje się przy 0 stopniach i przechodzi w całą tęczę wraz ze wzrostem wartości.

Available Functions
double hue();

Parameters

Ta funkcja nie przyjmuje żadnych parametrów.

Return Values

Wartość podwójna reprezentująca wartość odcienia wykrytego przez czujnik koloru w zakresie 0–359,00.

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