Optische sensor#

Invoering#

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

Klasseconstructors#

optical(
    int32_t index );

Klasse-destructor#

Vernietigt het optische object optical en maakt de bijbehorende grondstoffen vrij.

virtual ~optical();

Parameters#

Parameter

Type

Beschrijving

index

int32_t

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

Voorbeelden#

// Create an optical instance in Port 1
optical Optical1 = optical(PORT1);

Lidfuncties#

De optische klasse optical omvat de volgende lidfuncties:

  • setLight — Schakelt de LED van de optische sensor aan of uit.

  • setLightPower — Stelt het lichtvermogen van de optische sensor in.

  • isNearObject — Geeft aan of de optische sensor een object binnen bereik detecteert.

  • color — Geeft de kleur terug die door de optische sensor is gedetecteerd.

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

  • hue — Geeft de tint terug die door de optische sensor is gedetecteerd.

  • objectDetected — Registreert een functie die moet worden aangeroepen wanneer de optische sensor een object detecteert.

  • objectLost — Registreert een functie die moet worden aangeroepen wanneer de optische sensor een object verliest.

Voordat er lidfuncties van optical kunnen worden aangeroepen, moet er een instantie van optical worden aangemaakt, zoals hieronder weergegeven:

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

Hiermee wordt de LED van de optische sensor in- of uitgeschakeld. Het licht kan de optische sensor helpen objecten en kleuren beter te detecteren.

Available Functions
void  setLight(ledState state);

Parameters

Parameter

Type

Beschrijving

state

ledState

Hiermee wordt de LED aan- of uitgezet. ledState::on zet de LED aan op 100% helderheid. ledState::off zet hem uit.

Return Values

Deze functie retourneert geen waarde.

Examples
// Turn on LED with previous intensity.
Optical.setLight(ledState::on);

setLightPower#

Hiermee stel je de helderheid van de LED van de optische sensor in. Het extra licht helpt de optische sensor om objecten en kleuren beter te detecteren.

Als het lampje van de optische sensor uit is, zal het inschakelen wanneer het lampje hoger dan 0% wordt ingesteld.

Als het lampje van de optische sensor 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
void setLightPower( 
      int32_t      intensity, 
      percentUnits units = percent );

Parameters

Parameter

Type

Beschrijving

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.
Optical.setLightPower(50, percent);

isNearObject#

Geeft aan of de optische sensor 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 optische sensor detecteert een object.

  • false – De optische sensor detecteert geen object.

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

color#

Geeft de kleur terug die door de optische sensor is gedetecteerd.

Available Functions
vex::color  color();

Parameters

Deze functie accepteert geen parameters.

Return Values

De kleur die door de optische sensor wordt gedetecteerd als een instantie van de kleurklasse.

Mogelijke kleuren zijn:

  • black

  • white

  • red - Een tintwaarde tussen 340° en 20°

  • green - Een tintwaarde tussen 80° en 140°

  • blue - Een tintwaarde tussen 200° en 240°

  • yellow - Een tintwaarde tussen 40° en 60°

  • orange - Een tintwaarde tussen 20° en 40°

  • purple - Een tintwaarde tussen 240° en 280°

  • cyan - Een tintwaarde tussen 140° en 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#

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

Een hoger percentage betekent dat er meer licht teruggekaatst wordt naar de optische sensor. 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 optische sensor gedetecteerde helderheid weergeeft als een double in het bereik van 0 - 100%, of een double die de door de sensor gedetecteerde ruwe data weergeeft.

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#

Geeft de tintwaarde van de gedetecteerde kleur 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 optische sensor is gedetecteerd in het bereik 0 — 359,99.

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

objectDetected#

Registreert een callbackfunctie die wordt aangeroepen wanneer een object wordt gedetecteerd.

Available Functions
void objectDetected(void (* callback)(void));

Parameters

Parameter

Type

Beschrijving

callback

void (*)(void)

Een eerder gedefinieerde functie die wordt uitgevoerd wanneer de optische sensor een nieuw object detecteert.

Return Values

Deze functie retourneert geen waarde.

Examples

Definieer de callbackfunctie (buiten 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");
}

Registreer de callback binnen 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#

Registreert een callbackfunctie voor het geval een object verloren gaat.

Available Functions
void objectLost(void (* callback)(void));

Parameters

Parameter

Type

Beschrijving

callback

void (*)(void)

Een eerder gedefinieerde functie die wordt uitgevoerd wanneer de optische sensor een gedetecteerd object verliest.

Return Values

Deze functie retourneert geen waarde.

Examples

Definieer de callbackfunctie (buiten 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");
}

Registreer de callback binnen 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);
}