Optisch#

Invoering#

De optische sensor is een op licht gebaseerde sensor die gereflecteerd licht gebruikt om objecten te detecteren, kleuren te identificeren en helderheid en tint te meten.

Je kunt ook de helderheid van het interne lampje van de sensor aanpassen. Deze tools zijn ideaal voor programma’s die in realtime moeten reageren op gekleurde objecten, lichtomstandigheden of sensorfeedback.

Op deze pagina wordt optical_1 als voorbeeldnaam voor de optische sensor gebruikt. Vervang dit door uw eigen geconfigureerde naam indien nodig.

Hieronder vindt u een lijst met alle methoden:

Handelingen — Schakel de LED van de optische sensor in of uit.

  • set_light — Stelt de aan- of uit-status van de LED in.

Mutators — Pas de helderheid van de LED en de instellingen voor objectdetectie aan.

Getters — Lezen de aanwezigheid van objecten, kleur, helderheid, tint, RGB-waarde en sensorstatus.

  • is_near_object — Geeft aan of een gedetecteerd object zich in de buurt van de optische sensor bevindt.

  • color — Geeft de dichtstbijzijnde gedetecteerde kleurmatch terug.

  • brightness — Geeft de helderheid van een gedetecteerd object terug.

  • hue — Geeft de tint van een gedetecteerd object terug.

  • rgb — Geeft de RGB-waarden terug die door de optische sensor zijn gedetecteerd.

  • installed — Geeft aan of een optische sensor is verbonden met de hersenen.

Callback — Voer code uit wanneer een object wordt gedetecteerd of verloren gaat.

  • object_detected — Registreert een functie die moet worden aangeroepen wanneer een object wordt gedetecteerd.

  • object_lost — Registreert een functie die moet worden aangeroepen wanneer een object verloren gaat.

Constructors — Initialiseer en configureer handmatig een optische sensor.

  • Optical — Creëert een optische sensor.

Acties#

set_light#

set_light zet de LED van de optische sensor aan, uit of op een ingesteld helderheidsniveau.

Usage:
optical_1.set_light(state)

Parameters

Beschrijving

state

De status om de lichtsterkte of het vermogenspercentage in te stellen, in het bereik van 0 tot 100. De status kan een van de volgende zijn:

  • LedStateType.OFF (0 procent)
  • LedStateType.ON (100 procent)
  • integer — Een helderheidswaarde gegeven als een geheel getal van 0 tot 100.
# Turn the LED on and off forever
while True:
    optical_1.set_light(LedStateType.ON)
    wait(0.5, SECONDS)
    optical_1.set_light(LedStateType.OFF)
    wait(0.5, SECONDS)

# Turn the LED on and off forever
while True:
    optical_1.set_light(100)
    wait(0.5, SECONDS)
    optical_1.set_light(0)
    wait(0.5, SECONDS)

Mutators#

set_light_power#

set_light_power stelt de helderheid van het licht van de optische sensor in. Als de LED nog niet brandt, zal deze methode de LED ook inschakelen.

Usage:
optical_1.set_light_power(value)

Parameters

Beschrijving

value

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

# Turn the LED light on at different
# intensities
optical_1.set_light(LedStateType.ON)
wait(2, SECONDS)
optical_1.set_light_power(10)
wait(2, SECONDS)
optical_1.set_light_power(100)

object_detect_threshold#

object_detect_threshold stelt het bereik in waarbinnen de sensor objecten kan detecteren. Deze methode retourneert ook de nieuw ingestelde drempelwaarde.

Getallen dichter bij 255 duiden op een kleiner bereik, terwijl getallen dichter bij 0 duiden op een groter bereik.

Usage:
optical_1.object_detect_threshold(value)

Parameters

Beschrijving

value

Een getal tussen 0 en 255. Een waarde van 0 geeft de huidige waarde terug.

def detected():
    # The Brain will print that an object was detected on
    # the Brain's screen.
    brain.screen.print("object detected")
    brain.screen.next_row()
    optical_1.object_detect_threshold(254)
    optical_1.object_detected(detected_closer)

def detected_closer():
    # Detect an object closer to the sensor.
    brain.screen.print("Detected closer")
    
# Run detected when the Optical Sensor detects an object.
optical_1.object_detect_threshold(100)
optical_1.object_detected(detected)

# Detect an object first with the detect threshold at 100,
# then again at 254
stage = 0

def detected():
    global stage
    if stage == 0:
        brain.screen.print("Get closer...")
        brain.screen.next_row()
        stage = 1
        optical_1.object_detect_threshold(254)
        optical_1.object_detected(detected_closer)

def detected_closer():
    global stage
    if stage == 1:
        brain.screen.print("Too close!")
        brain.screen.next_row()
        stage = 2

optical_1.object_detect_threshold(100)
optical_1.object_detected(detected)
wait(15, MSEC)

Getters#

is_near_object#

is_near_object geeft aan of de optische sensor zich in de buurt van een object bevindt.

  • True — De sensor bevindt zich in de buurt van een object.

  • False — De sensor bevindt zich niet in de buurt van een object.

Usage:
optical_1.is_near_object()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# Stop driving when Optical Sensor is 
# near an object
while True:
    if optical_1.is_near_object():
        drivetrain.stop()
    else:
        drivetrain.drive(FORWARD)

color#

color retourneert de vooraf gedefinieerde kleur die door de optische sensor is gedetecteerd uit de onderstaande kleuren:

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# Stop the robot if the Optical Sensor 
# detects red
while True:
    if optical_1.color() == Color.RED:
        drivetrain.stop()
    else:
        drivetrain.turn(RIGHT)

brightness#

brightness geeft de helderheid weer die door de optische sensor is gedetecteerd.

Een hoger percentage betekent dat de optische sensor meer licht detecteert. Een lager percentage betekent dat de optische sensor minder licht detecteert.

Usage:
optical_1.brightness(readraw)

Parameters

Beschrijving

readraw

Optioneel. Een Booleaanse waarde om de ruwe helderheidsgegevens in plaats van het percentage te lezen:

  • True — Retourneer de ruwe gegevens.
  • False (standaard) — Retourneer de helderheid als een percentage.

hue#

hue retourneert de waarde van de tint die door de optische sensor is gedetecteerd als een zwevendekommagetal in het bereik van 0 tot 359,99 graden.

Tint is een manier om kleur te beschrijven met behulp van getallen op een kleurencirkel, zoals hieronder weergegeven.

Een cirkelvormig kleurenwiel dat een volledig spectrum aan tinten weergeeft, gelabeld met gradenwaarden rond de omtrek, oplopend in stappen van 30 graden van 0° bovenaan tot 360°.

Usage:
optical_1.hue()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# Check the hue of a detected object
# to determine if it is pink
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    if 290 < optical_1.hue() < 350:
        brain.screen.print("Pink!")
        wait(0.1,SECONDS)
    else:
        brain.screen.print("Not pink.")
        wait(0.1,SECONDS)

rgb#

rgb retourneert de rode, groene, blauwe en helderheidswaarden die door de optische sensor zijn gedetecteerd als een tuple.

Usage:
optical_1.rgb(raw)

Parameters

Beschrijving

raw

Optioneel. Een Booleaanse waarde om te bepalen of u onbewerkte of verwerkte waarden retourneert:

  • True — Retourneer de onbewerkte waarde.
  • False (standaard) — Retourneer de onbewerkte waarde niet.
# Display the rgb values and brightness detected
# by the Optical Sensor.
brain.screen.set_font(FontType.MONO12)
while True:
    brain.screen.clear_screen()
    brain.screen.set_cursor(1, 1)
    brain.screen.print(optical_1.rgb())
    wait(0.1, SECONDS)

installed#

installed retourneert een Booleaanse waarde die aangeeft of de optische sensor is verbonden met de hersenen.

  • True — De optische sensor is verbonden met de hersenen.

  • False — De optische sensor is niet verbonden met de hersenen.

Usage:
optical_1.installed()

Parameters

Beschrijving

Deze methode heeft geen parameters.

# Display a message if the Optical Sensor
# is installed.
if optical_1.installed():
    brain.screen.print("Installed!")

Terugbelverzoek#

object_detected#

object_detected registreert een callbackfunctie voor wanneer een object wordt gedetecteerd.

Usage:
optical_1.object_detected(callback, arg)

Parameters

Beschrijving

callback

Een functie die vooraf is gedefinieerd om te worden uitgevoerd wanneer een object wordt gedetecteerd.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Functies met parameters voor meer informatie.

def detected():
    drivetrain.stop()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("object detected")
    wait(0.5,SECONDS)
    brain.screen.clear_screen()

# Display a message when the 
# Optical Sensor detects an object
drivetrain.drive(FORWARD)
optical_1.object_detected(detected)

object_lost#

object_lost registreert een callbackfunctie voor het geval de optische sensor een gedetecteerd object verliest.

Usage:
optical_1.object_lost(callback, arg)

Parameters

Beschrijving

callback

Een functie die eerder is gedefinieerd om te worden uitgevoerd wanneer een object verloren gaat.

arg

Optioneel. Een tuple met argumenten die aan de callbackfunctie moeten worden doorgegeven. Zie Functies met parameters voor meer informatie.

def lost():
    drivetrain.stop()
    brain.screen.set_cursor(1, 1)
    brain.screen.print("object lost")
    wait(0.5,SECONDS)
    brain.screen.clear_screen()

# Display a message when the Optical 
# Sensor loses sight of on object
drivetrain.drive(REVERSE)
optical_1.object_lost(lost)

Constructeurs#

Constructors worden gebruikt om handmatig Optical objecten te creëren, die nodig zijn voor het configureren van een optische sensor buiten VEXcode.

Optical#

Optical creëert een optische sensor.

Usage:
Optical(smartport)

Parameter

Beschrijving

smartport

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

# Construct an Optical Sensor "optical_1" with the
# Optical class
optical_1 = Optical(Ports.PORT1)

# Display the brightness of a red object detected
# by the Optical Sensor
drivetrain.turn(RIGHT)
while not optical_1.color() == Color.RED:
    wait(50, MSEC)
drivetrain.stop()
brain.screen.print(optical_1.brightness())