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.
set_light_power— Asettaa LEDin kirkkautta.object_detect_threshold— Asettaa kohteiden havaitsemisen kynnyksen.
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.
Optical— Luo optisen anturin.
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 |
|---|---|
|
Tila, jolla asetetaan valo tai tehoprosentti väliltä 0–100. Tila voi olla jompikumpi seuraavista:
|
# 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 |
|---|---|
|
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 |
|---|---|
|
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ä:
BLACKBLUECYANGREENORANGEPURPLEREDTRANSPARENTWHITEYELLOW
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 |
|---|---|
|
Valinnainen. Totuusarvo, joka lukee raakadatan prosenttiarvon sijaan:
|
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.

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 |
|---|---|
|
Valinnainen. Totuusarvo, joka määrittää, palautatko raaka- vai käsitellyt arvot:
|
# 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 |
|---|---|
|
Funktio, joka on aiemmin määritelty suoritettavaksi, kun objekti havaitaan. |
|
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 |
|---|---|
|
Funktio, joka on aiemmin määritelty suoritettavaksi, kun objekti katoaa. |
|
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 |
|---|---|
|
Ä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())