Kleursensor#

Invoering#

De klasse colorsensor wordt gebruikt om toegang te krijgen tot gegevens van de Kleursensor. Deze gebruikt gereflecteerd licht om objecten te detecteren, kleuren te identificeren en helderheid en tint te meten.

Klasseconstructor#

colorsensor Color1 = colorsensor(index);

Klasse-destructor#

Vernietigt het colorsensor object en geeft de bijbehorende resources vrij.

virtual ~colorsensor();

Parameters#

Parameter

Type

Beschrijving

index

int32_t

De slimme poort waarop de kleursensor is aangesloten, wordt weergegeven als PORTx, waarbij x het poortnummer is (bijvoorbeeld PORT1).

Voorbeelden#

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

Lidfuncties#

De klasse colorsensor bevat de volgende lidfuncties:

  • setLight – Schakelt de LED van de kleursensor in, uit of naar een ingesteld helderheidsniveau.

  • isNearObject – Geeft aan of een object zich al dan niet dicht bij de kleursensor bevindt.

  • detects – Geeft aan of een bepaalde kleur al dan niet door de kleursensor is gedetecteerd.

  • colorname – Geeft de naam terug van de kleur die door de kleursensor is gedetecteerd.

  • brightness – Geeft de gedetecteerde helderheid van een object terug.

  • hue – Geeft de gedetecteerde tintwaarde terug.

Voordat er lidfuncties van colorsensor kunnen worden aangeroepen, moet er een instantie van colorsensor worden gemaakt, zoals hieronder weergegeven:

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

Hiermee wordt de lichtsterkte van de LED van de kleursensor ingesteld. Het extra licht helpt de kleursensor om objecten en kleuren beter te detecteren.

Als het lampje van de kleursensor uit is, zal het inschakelen wanneer het lichtvermogen boven 0% wordt ingesteld.

Als het lampje van de kleursensor brandt, zal het instellen van het lichtvermogen op 0% het lampje uitschakelen.

Een hoger percentage maakt het licht feller. Een lager percentage maakt het licht minder fel.

Available Functions

1 — Schakelt de led aan of uit met behulp van ledState.

void setLight( 
  ledState  state );

2 — Schakelt de led in met een specifieke intensiteit.

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

Parameters

Parameter

Type

Beschrijving

state

ledState

Schakelt de LED in of uit. ledState::on schakelt de LED in op 100% helderheid. ledState::off schakelt hem uit.

intensity

int32_t

Het vermogensniveau om de verlichting in te stellen, van 0 tot 100.

units

percentUnits

De eenheid die de lichtintensiteit weergeeft: percent procent pct

Return Values

Deze functie retourneert geen waarde.

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

isNearObject#

Geeft aan of de kleursensor een object in de buurt detecteert.

Available Functions
bool  isNearObject();

Parameters

Deze functie accepteert geen parameters.

Return Values

Deze functie retourneert een Booleaanse waarde die aangeeft of er een object in de buurt is gedetecteerd:

  • true – De kleursensor detecteert een object.

  • false – De kleursensor detecteert geen object.

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

detects#

Geeft aan of de kleursensor een bepaalde kleur detecteert.

Available Functions

1 — Detects a colorType.

bool detects( 
  colorType  color );

2 — Detects a vex::color.

bool detects( 
  vex::color  color );

Parameters

Parameters

Type

Beschrijving

color

colorType

Een geldige kleur:

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

color

vex::color

Een geldige aangepaste kleur, of een van de hierboven vermelde vooraf gedefinieerde kleuren.

Return Values
  • true – De kleursensor detecteert de kleur.

  • false – De kleursensor detecteert de kleur niet.

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#

Geeft de dichtstbijzijnde overeenkomende kleur terug.

Available Functions
colorType colorname();

Parameters

Deze functie accepteert geen parameters.

Return Values

Bij directe afdruk wordt de numerieke waarde weergegeven die aan die kleur is gekoppeld:

Kleur

Numerieke waarde

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
  • De functie convertColorToString wordt automatisch door VEXcode aangemaakt wanneer een kleursensor wordt geconfigureerd in het venster Apparaten. Deze functie is alleen beschikbaar binnen VEXcode IQ-projecten en werkt niet in andere omgevingen.

  • Bij gebruik van colorname buiten VEXcode moeten vergelijkingen direct worden gemaakt met een colorType waarde — elke kleur die begint met colorType:: (bijvoorbeeld colorType::green of 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#

Geeft de hoeveelheid licht terug die door het object wordt weerkaatst.

Een hoger percentage betekent dat er meer licht teruggekaatst wordt naar de kleursensor. Een lager percentage betekent dat er minder licht teruggekaatst wordt.

Available Functions
double  brightness(bool bRaw = false);

Parameters

Parameter

Type

Beschrijving

bRaw

bool

Een Booleaanse waarde om de ruwe helderheidsgegevens in plaats van het percentage te lezen. De standaardwaarde is false false).

Return Values

Een double die de door de kleursensor gedetecteerde helderheid in het bereik van 0 - 100% vertegenwoordigt, of een double die de door de sensor gedetecteerde ruwe data vertegenwoordigt.

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#

Geeft de door de kleursensor gedetecteerde tint terug.

Tint is een manier om kleur te beschrijven met behulp van getallen op een kleurencirkel.

Het VEX-kleurenwiel toont de gradaties van kleuren rond een cirkel, met rood op 0 graden en overgaand door de regenboog naarmate de waarde toeneemt.

Available Functions
double hue();

Parameters

Deze functie accepteert geen parameters.

Return Values

Een double die de waarde vertegenwoordigt van de tint die door de kleursensor is gedetecteerd in het bereik 0 — 359,00.

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