Optische#

Einführung#

Der optische Sensor ist ein lichtbasierter Sensor, der reflektiertes Licht nutzt, um Objekte zu erkennen, Farben zu identifizieren und Helligkeit und Farbton zu messen.

Sie können auch die Helligkeit der internen Sensorbeleuchtung einstellen. Diese Funktionen eignen sich ideal für Programme, die in Echtzeit auf farbige Objekte, Lichtverhältnisse oder Sensordaten reagieren müssen.

Diese Seite verwendet optical_1 als Beispielnamen für den optischen Sensor. Ersetzen Sie diesen bei Bedarf durch Ihren eigenen Namen.

Nachfolgend finden Sie eine Liste aller Methoden:

Aktionen – Schalten Sie die LED des optischen Sensors ein oder aus.

  • set_light — Legt den Ein- oder Aus-Zustand der LED fest.

Mutatoren – Einstellungen für LED-Helligkeit und Objekterkennung anpassen.

Getter – Lesen Objektpräsenz, Farbe, Helligkeit, Farbton, RGB-Wert und Sensorstatus.

  • is_near_object — Gibt zurück, ob sich ein erkanntes Objekt in der Nähe des optischen Sensors befindet.

  • color — Gibt die am besten erkannte Farbübereinstimmung zurück.

  • brightness — Gibt die Helligkeit eines erkannten Objekts zurück.

  • hue — Gibt den Farbton eines erkannten Objekts zurück.

  • rgb — Gibt die vom optischen Sensor erfassten RGB-Werte zurück.

  • installed — Gibt zurück, ob ein optischer Sensor mit dem Gehirn verbunden ist.

Callback – Führt Code aus, wenn ein Objekt erkannt oder verloren geht.

  • object_detected — Registriert eine Funktion, die aufgerufen werden soll, wenn ein Objekt erkannt wird.

  • object_lost — Registriert eine Funktion, die aufgerufen wird, wenn ein Objekt verloren geht.

Konstruktoren – Manuelle Initialisierung und Konfiguration eines optischen Sensors.

  • Optical — Erzeugt einen optischen Sensor.

Aktionen#

set_light#

set_light schaltet die LED des optischen Sensors ein, aus oder auf eine festgelegte Helligkeitsstufe.

Usage:
optical_1.set_light(state)

Parameter

Beschreibung

state

Der Zustand, in dem das Licht eingestellt werden soll, oder der Prozentsatz der Leistung im Bereich von 0 bis 100 %. Der Zustand kann einer der folgenden sein:

  • LedStateType.OFF (0 Prozent)
  • LedStateType.ON (100 Prozent)
  • integer — Ein Helligkeitswert, der als ganze Zahl von 0 bis 100 angegeben wird.
# 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)

Mutatoren#

set_light_power#

Mit dem Befehl set_light_power wird die Helligkeit der LED des optischen Sensors eingestellt. Falls die LED noch nicht leuchtet, wird sie durch diese Methode eingeschaltet.

Usage:
optical_1.set_light_power(value)

Parameter

Beschreibung

value

Die Leistungsstufe zum Einstellen der Lampe wird von 0 bis 100 in Prozent angegeben.

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

Der Wert object_detect_threshold legt die Reichweite fest, in der der Sensor Objekte erkennen kann. Diese Methode gibt außerdem den neu festgelegten Schwellenwert zurück.

Zahlen, die näher an 255 liegen, deuten auf eine kleinere Spannweite hin, während Zahlen, die näher an 0 liegen, auf eine größere Spannweite hinweisen.

Usage:
optical_1.object_detect_threshold(value)

Parameter

Beschreibung

value

Eine Zahl im Bereich von 0 bis 255. Der Wert 0 gibt einfach den aktuellen Wert zurück.

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)

Getter#

is_near_object#

is_near_object gibt an, ob sich der optische Sensor in der Nähe eines Objekts befindet.

  • True — Der Sensor befindet sich in der Nähe eines Objekts.

  • False — Der Sensor befindet sich nicht in der Nähe eines Objekts.

Usage:
optical_1.is_near_object()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# 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 gibt die vom optischen Sensor aus den folgenden Farben erkannte vordefinierte Farbe zurück:

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

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

brightness#

Helligkeit brightness.

Ein höherer Prozentsatz bedeutet, dass der optische Sensor mehr Licht erfasst. Ein niedrigerer Prozentsatz bedeutet, dass der optische Sensor weniger Licht erfasst.

Usage:
optical_1.brightness(readraw)

Parameter

Beschreibung

readraw

Optional. Ein boolescher Wert, um die Rohhelligkeitsdaten anstelle der Prozentwerte zu lesen:

  • True – Gibt die Rohdaten zurück.
  • False (Standard) – Gibt die Helligkeit als Prozentwert zurück.

hue#

hue gibt den vom optischen Sensor erfassten Farbton als Gleitkommazahl im Bereich von 0 bis 359,99 Grad zurück.

Der Farbton ist eine Methode, Farben mithilfe von Zahlen auf einem Farbkreis zu beschreiben, wie unten dargestellt.

Ein kreisförmiges Farbrad, das ein vollständiges Farbspektrum anzeigt, wobei die Gradwerte am Rand in 30-Grad-Schritten von 0° oben bis 360° ansteigen.

Usage:
optical_1.hue()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

# 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 gibt die vom optischen Sensor erfassten Rot-, Grün-, Blau- und Helligkeitswerte als Tupel zurück.

Usage:
optical_1.rgb(raw)

Parameter

Beschreibung

raw

Optional. Ein boolescher Wert, der angibt, ob Rohwerte oder verarbeitete Werte zurückgegeben werden:

  • True – Rohwert zurückgeben.
  • False (Standard) – Rohwert nicht zurückgeben.
# 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 gibt einen booleschen Wert zurück, der angibt, ob der optische Sensor mit dem Gehirn verbunden ist.

  • True — Der optische Sensor ist mit dem Gehirn verbunden.

  • False — Der optische Sensor ist nicht mit dem Gehirn verbunden.

Usage:
optical_1.installed()

Parameter

Beschreibung

Diese Methode hat keine Parameter.

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

Rückruf#

object_detected#

object_detected registriert eine Rückruffunktion, die aufgerufen wird, wenn ein Objekt erkannt wird.

Usage:
optical_1.object_detected(callback, arg)

Parameter

Beschreibung

callback

Eine Funktion, die zuvor definiert wurde und ausgeführt wird, wenn ein Objekt erkannt wird.

arg

Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Funktionen mit Parametern.

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 registriert eine Rückruffunktion, die ausgelöst wird, wenn der optische Sensor ein erkanntes Objekt verliert.

Usage:
optical_1.object_lost(callback, arg)

Parameter

Beschreibung

callback

Eine Funktion, die zuvor definiert wurde und ausgeführt werden soll, wenn ein Objekt verloren geht.

arg

Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Funktionen mit Parametern.

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)

Konstruktoren#

Konstruktoren werden verwendet, um manuell Optical Objekte zu erstellen, die für die Konfiguration eines optischen Sensors außerhalb von VEXcode erforderlich sind.

Optical#

Optical erzeugt einen optischen Sensor.

Usage:
Optical(smartport)

Parameter

Beschreibung

smartport

Der Smart Port, an den der optische Sensor angeschlossen ist, wird als PORTx bezeichnet, wobei x die Nummer des Ports ist.

# 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())