Optinen#

Johdanto#

Optinen anturi on valoon perustuva anturi, joka käyttää heijastunutta valoa esineiden havaitsemiseen, värien tunnistamiseen sekä kirkkauden ja sävyn mittaamiseen.

Voit myös määrittää anturin sisäisen valon kirkkautta. Nämä työkalut sopivat ihanteellisesti ohjelmiin, joiden on reagoitava värillisiin esineisiin, valaistusolosuhteisiin tai anturin palautteeseen reaaliajassa.

Tällä sivulla käytetään esimerkkinä optisen anturin nimeä optical_1 Korvaa se tarvittaessa omalla määritetyllä nimelläsi.

Alla on luettelo kaikista menetelmistä:

Toiminnot — Kytke optisen anturin LED-valo päälle tai pois päältä.

  • set_light — Asettaa LEDin päälle- tai pois päältä -tilan.

Mutaattorit — Säädä LED-valojen kirkkautta ja kohteiden tunnistusasetuksia.

Getterit — Lukevat kohteen läsnäolon, värin, kirkkauden, sävyn, RGB:n ja anturin tilan.

  • is_near_object — Palauttaa, onko havaittu kohde optisen anturin lähellä.

  • color — Palauttaa lähimmän havaitun värin vastineen.

  • brightness — Palauttaa havaitun kohteen kirkkautta.

  • hue — Palauttaa havaitun objektin sävyn.

  • rgb — Palauttaa optisen anturin havaitsemat RGB-arvot.

  • installed — Palauttaa, onko aivoihin kytketty optinen anturi.

Takaisinkutsu — Suorita koodi, kun objekti havaitaan tai katoaa.

  • object_detected — Rekisteröi funktion kutsuttavaksi, kun objekti havaitaan.

  • object_lost — Rekisteröi funktion kutsuttavaksi, kun objekti katoaa.

Konstruktorit — Optisen anturin manuaalinen alustaminen ja konfigurointi.

Toiminnot#

set_light#

set_light asettaa optisen anturin LEDin päälle, pois päältä tai tietylle kirkkaustasolle.

Usage:
optical_1.set_light(state)

Parametrit

Kuvaus

state

Tila, jolla asetetaan valo tai tehoprosentti väliltä 0–100. Tila voi olla jompikumpi seuraavista:

  • LedStateType.OFF (0 prosenttia)
  • LedStateType.ON (100 prosenttia)
  • integer — Kirkkausarvo kokonaislukuna 0–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)

Mutaattorit#

set_light_power#

set_light_power asettaa optisen anturin valon kirkkautta. Jos LED ei ole jo päällä, tämä menetelmä sytyttää myös LEDin.

Usage:
optical_1.set_light_power(value)

Parametrit

Kuvaus

value

Tehotaso, jolla valo asetetaan prosentteina välille 0–100.

# 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 asettaa alueen, jolta anturi voi havaita objekteja. Tämä metodi palauttaa myös uuden asetetun kynnysarvon.

Lähempänä lukua 255 olevat luvut osoittavat pienempää vaihteluväliä, kun taas lähempänä lukua 0 olevat luvut osoittavat suurempaa vaihteluväliä.

Usage:
optical_1.object_detect_threshold(value)

Parametrit

Kuvaus

value

Luku väliltä 0–255. Arvo 0 palauttaa vain nykyisen arvon.

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)

Getterit#

is_near_object#

is_near_object palauttaa, onko optinen anturi kohteen lähellä.

  • True — Anturi on lähellä kohdetta.

  • False — Anturi ei ole lähellä kohdetta.

Usage:
optical_1.is_near_object()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# 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 palauttaa optisen anturin havaitseman ennalta määritetyn värin alla olevista väreistä:

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# 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 palauttaa optisen anturin havaitseman kirkkauden.

Korkeampi prosenttiosuus tarkoittaa, että optinen anturi havaitsee enemmän valoa. Matalampi prosenttiosuus tarkoittaa, että optinen anturi havaitsee vähemmän valoa.

Usage:
optical_1.brightness(readraw)

Parametrit

Kuvaus

readraw

Valinnainen. Totuusarvo, joka lukee raakadatan prosenttiarvon sijaan:

  • True — Palauttaa raakadatan.
  • False (oletus) — Palauttaa kirkkaus prosentteina.

hue#

hue palauttaa optisen anturin havaitseman sävyn arvon liukulukuna välillä 0–359,99 astetta.

Sävy on tapa kuvata väriä käyttämällä numeroita väriympyrän ympärillä, kuten alla on esitetty.

Pyöreä väriympyrä, joka näyttää täyden spektrin sävyjä, jotka on merkitty reunan ympärillä astearvoilla, kasvaen 30 asteen välein ylhäältä 0°:sta 360°:een.

Usage:
optical_1.hue()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

# 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 palauttaa optisen anturin havaitsemat punaisen, vihreän, sinisen ja kirkkausarvot tuplena.

Usage:
optical_1.rgb(raw)

Parametrit

Kuvaus

raw

Valinnainen. Totuusarvo, joka määrittää, palautatko raaka- vai käsitellyt arvot:

  • True — Palauttaa raaka-arvon.
  • False (oletus) — Älä palauta raaka-arvoa.
# 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 palauttaa totuusarvon, joka ilmaisee, onko optinen anturi kytketty aivoihin.

  • True — Optinen anturi on kytketty aivoihin.

  • False — Optinen anturi ei ole yhteydessä aivoihin.

Usage:
optical_1.installed()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

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

Takaisinsoitto#

object_detected#

object_detected rekisteröi takaisinkutsufunktion, kun objekti havaitaan.

Usage:
optical_1.object_detected(callback, arg)

Parametrit

Kuvaus

callback

Funktio, joka on aiemmin määritelty suoritettavaksi, kun objekti havaitaan.

arg

Valinnainen. Tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Lisätietoja on kohdassa Funktiot parametreilla.

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 rekisteröi takaisinkutsufunktion, kun optinen anturi kadottaa havaitun objektin.

Usage:
optical_1.object_lost(callback, arg)

Parametrit

Kuvaus

callback

Funktio, joka on aiemmin määritelty suoritettavaksi, kun objekti katoaa.

arg

Valinnainen. Tuple, joka sisältää argumentteja, jotka välitetään takaisinkutsufunktiolle. Lisätietoja on kohdassa Funktiot parametreilla.

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)

Rakentajat#

Konstruktoreita käytetään Optical -objektien manuaaliseen luomiseen, jotka ovat välttämättömiä optisen anturin konfiguroimiseksi VEXcoden ulkopuolella.

Optical#

Optical luo optisen anturin.

Usage:
Optical(smartport)

Parametri

Kuvaus

smartport

Älyportti, johon optinen anturi on kytketty, kirjoitetaan muodossa PORTx, jossa x on portin numero.

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