Optisk#

Introduktion#

Den optiska sensorn är en ljusbaserad sensor som använder reflekterat ljus för att detektera objekt, identifiera färger och mäta ljusstyrka och nyans.

Du kan också konfigurera ljusstyrkan på sensorns interna ljus. Dessa verktyg är idealiska för program som behöver reagera på färgade objekt, ljusförhållanden eller sensorfeedback i realtid.

Den här sidan använder optical_1 som exempelnamn för den optiska sensorn. Ersätt det med ditt eget konfigurerade namn efter behov.

Nedan följer en lista över alla metoder:

Åtgärder — Slå på eller av den optiska sensorns lysdiod.

  • set_light — Ställer in lysdiodens på- eller avstängda tillstånd.

Mutatorer — Justera LED-ljusstyrka och inställningar för objektdetektering.

Getters — Läser objektets närvaro, färg, ljusstyrka, nyans, RGB och sensorstatus.

  • is_near_object — Returnerar om ett detekterat objekt är nära den optiska sensorn.

  • color — Returnerar den närmaste upptäckta färgmatchningen.

  • brightness — Returnerar ljusstyrkan för ett detekterat objekt.

  • hue — Returnerar nyansen för ett detekterat objekt.

  • rgb — Returnerar RGB-värdena som detekterats av den optiska sensorn.

  • installed — Returnerar om en optisk sensor är ansluten till hjärnan.

Återanrop — Kör kod när ett objekt upptäcks eller förloras.

  • object_detected — Registrerar en funktion som ska anropas när ett objekt detekteras.

  • object_lost — Registrerar en funktion som ska anropas när ett objekt förloras.

Konstruktörer — Initiera och konfigurera en optisk sensor manuellt.

  • Optical — Skapar en optisk sensor.

Åtgärder#

set_light#

set_light ställer in den optiska sensorns LED till på, av eller en inställd ljusstyrka.

Usage:
optical_1.set_light(state)

Parametrar

Beskrivning

state

Tillståndet för att ställa in ljusstyrkan eller procentandelen effekt i intervallet 0 till 100. Tillståndet kan vara något av följande:

  • LedStateType.OFF (0 procent)
  • LedStateType.ON (100 procent)
  • integer — Ett ljusstyrkevärde som anges som ett heltal från 0 till 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)

Mutatorer#

set_light_power#

set_light_power ställer in ljusstyrkan på den optiska sensorns ljus. Om lysdioden inte redan är tänd, kommer den här metoden också att tända lysdioden.

Usage:
optical_1.set_light_power(value)

Parametrar

Beskrivning

value

Effektnivån för att ställa in ljuset från 0 till 100 i 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 anger det område som sensorn kan detektera objekt från. Denna metod returnerar också det nyligen inställda tröskelvärdet.

Siffror närmare 255 indikerar ett mindre intervall, medan siffror närmare 0 indikerar ett större intervall.

Usage:
optical_1.object_detect_threshold(value)

Parametrar

Beskrivning

value

Ett tal i intervallet 0–255. Värdet 0 returnerar bara det aktuella värdet.

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 returnerar om den optiska sensorn är nära ett objekt.

  • True — Sensorn är nära ett objekt.

  • False — Sensorn är inte nära ett föremål.

Usage:
optical_1.is_near_object()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar den fördefinierade färgen som detekterats av den optiska sensorn från färgerna nedan:

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar den ljusstyrka som detekterats av den optiska sensorn.

En högre procentandel innebär att den optiska sensorn detekterar mer ljus. En lägre procentandel innebär att den optiska sensorn detekterar mindre ljus.

Usage:
optical_1.brightness(readraw)

Parametrar

Beskrivning

readraw

Valfritt. Ett booleskt värde för att läsa rådata för ljusstyrka istället för procent:

  • True — Returnerar rådata.
  • False (standard) — Returnerar ljusstyrka som en procentandel.

hue#

hue returnerar värdet på den nyans som detekterats av den optiska sensorn som ett flyttal i intervallet 0 till 359,99 grader.

Nyans är ett sätt att beskriva färg med hjälp av siffror runt en färgcirkel, som visas nedan.

En cirkulär färgcirkel som visar ett komplett spektrum av nyanser märkta med gradvärden runt omkretsen, ökande i 30-graders steg från 0° högst upp till 360°.

Usage:
optical_1.hue()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar de röda, gröna, blå och ljusstyrkevärdena som detekterats av den optiska sensorn som en tupel.

Usage:
optical_1.rgb(raw)

Parametrar

Beskrivning

raw

Valfritt. Ett booleskt värde för att avgöra om du returnerar råa eller bearbetade värden:

  • True — Returnerar råvärdet.
  • False (standard) — Returnerar inte råvärdet.
# 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 returnerar ett booleskt värde som anger om den optiska sensorn är ansluten till hjärnan.

  • True — Den optiska sensorn är ansluten till hjärnan.

  • False — Den optiska sensorn är inte ansluten till hjärnan.

Usage:
optical_1.installed()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

Återuppringning#

object_detected#

object_detected registrerar en callback-funktion för när ett objekt detekteras.

Usage:
optical_1.object_detected(callback, arg)

Parametrar

Beskrivning

callback

En funktion som tidigare är definierad att köras när ett objekt detekteras.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Funktioner med parametrar för mer information.

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 registrerar en återuppringningsfunktion för när den optiska sensorn förlorar ett detekterat objekt.

Usage:
optical_1.object_lost(callback, arg)

Parametrar

Beskrivning

callback

En funktion som tidigare är definierad att köras när ett objekt förloras.

arg

Valfritt. En tupel som innehåller argument som ska skickas till callback-funktionen. Se Funktioner med parametrar för mer information.

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)

Konstruktörer#

Konstruktorer används för att manuellt skapa Optical objekt, vilka är nödvändiga för att konfigurera en optisk sensor utanför VEXcode.

Optical#

Optical skapar en optisk sensor.

Usage:
Optical(smartport)

Parameter

Beskrivning

smartport

Den smarta porten som den optiska sensorn är ansluten till, skriven som PORTx där x är portens nummer.

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