Óptico#

Introdução#

O sensor ótico é um sensor baseado em luz que utiliza a luz refletida para detetar objetos, identificar cores e medir o brilho e a tonalidade.

Também pode configurar o brilho da luz interna do sensor. Estas ferramentas são ideais para programas que necessitam de reagir a objetos coloridos, condições de iluminação ou feedback do sensor em tempo real.

Esta página utiliza optical_1 como exemplo do nome do sensor óptico. Substitua-o pelo nome que configurou, se necessário.

Segue-se uma lista de todos os métodos:

Ações — Ligar ou desligar o LED do sensor ótico.

  • set_light — Define o estado ligado ou desligado do LED.

Modificadores — Ajustam o brilho do LED e as definições de deteção de objetos.

Getters — Lê a presença do objeto, cor, brilho, matiz, RGB e estado do sensor.

  • is_near_object — Retorna se um objeto detetado está próximo do sensor ótico.

  • color — Retorna a correspondência de cor detectada mais próxima.

  • brightness — Devolve o brilho de um objecto detectado.

  • hue — Devolve a matiz de um objeto detetado.

  • rgb — Devolve os valores RGB detectados pelo sensor óptico.

  • installed — Retorna se um sensor óptico está ligado ao cérebro.

Callback — Executa o código quando um objeto é detetado ou perdido.

  • object_detected — Regista uma função a ser chamada quando um objecto é detectado.

  • object_lost — Regista uma função a ser chamada quando um objeto é perdido.

Construtores — Inicialize e configure manualmente um sensor ótico.

  • Optical — Cria um sensor óptico.

Ações#

set_light#

set_light define se o LED do sensor ótico está ligado, desligado ou num nível de brilho definido.

Usage:
optical_1.set_light(state)

Parâmetros

Descrição

state

O estado para definir a luz ou a percentagem de potência no intervalo de 0 a 100. O estado pode ser um dos seguintes:

  • LedStateType.OFF (0%)
  • LedStateType.ON (100%)
  • integer — Um valor de brilho dado como um número inteiro de 0 a 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)

Mutantes#

set_light_power#

O comando set_light_power define o brilho da luz do sensor óptico. Se o LED ainda não estiver aceso, este método também o ligará.

Usage:
optical_1.set_light_power(value)

Parâmetros

Descrição

value

O nível de potência para definir a luz varia de 0 a 100 em percentagem.

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

O parâmetro object_detect_threshold ( object_detect_threshold define o intervalo a partir do qual o sensor pode detetar objetos. Este método também devolve o novo limite definido.

Números mais próximos de 255 indicam uma amplitude menor, enquanto números mais próximos de 0 indicam uma amplitude maior.

Usage:
optical_1.object_detect_threshold(value)

Parâmetros

Descrição

value

Um número no intervalo de 0 a 255. O valor 0 irá devolver o valor atual.

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 retorna se o sensor ótico está próximo de um objeto.

  • True — O sensor está próximo de um objeto.

  • False — O sensor não está perto de um objeto.

Usage:
optical_1.is_near_object()

Parâmetros

Descrição

Este método não tem parâmetros.

# 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 returns the predefined color detected by the Optical Sensor from the colors below:

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

Parâmetros

Descrição

Este método não tem parâmetros.

# 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 returns the brightness detected by the Optical Sensor.

Uma percentagem mais elevada significa que o sensor ótico deteta mais luz. Uma percentagem mais baixa significa que o sensor ótico deteta menos luz.

Usage:
optical_1.brightness(readraw)

Parâmetros

Descrição

readraw

Opcional. Um valor booleano para ler os dados brutos de brilho em vez de percentagem:

  • True — Devolve os dados brutos.
  • False (padrão) — Devolve o brilho em percentagem.

hue#

hue devolve o valor da matiz detectada pelo sensor óptico como um número de ponto flutuante no intervalo de 0 a 359,99 graus.

O matiz é uma forma de descrever a cor utilizando números num círculo cromático, como se mostra abaixo.

Uma roda de cores circular exibindo um espectro completo de tonalidades rotuladas com valores em graus em torno do perímetro, aumentando em incrementos de 30 graus de 0° no topo até 360°.

Usage:
optical_1.hue()

Parâmetros

Descrição

Este método não tem parâmetros.

# 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 devolve os valores de vermelho, verde, azul e brilho detectados pelo sensor óptico como uma tupla.

Usage:
optical_1.rgb(raw)

Parâmetros

Descrição

raw

Opcional. Um valor booleano para determinar se devolve valores brutos ou processados:

  • True — Devolve o valor bruto.
  • False (padrão) — Não devolve o valor bruto.
# 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#

O valor installed devolve um valor booleano indicando se o sensor ótico está ligado ao cérebro.

  • True — O sensor ótico está ligado ao cérebro.

  • False — O sensor ótico não está ligado ao cérebro.

Usage:
optical_1.installed()

Parâmetros

Descrição

Este método não tem parâmetros.

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

Ligar de volta#

object_detected#

object_detected regista uma função de callback para quando um objeto é detetado.

Usage:
optical_1.object_detected(callback, arg)

Parâmetros

Descrição

callback

Uma função que é previamente definida para ser executada quando um objeto é detetado.

arg

Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Funções com Parâmetros para obter mais informações.

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 regista uma função de callback para quando o sensor óptico perde um objecto detectado.

Usage:
optical_1.object_lost(callback, arg)

Parâmetros

Descrição

callback

Uma função que está previamente definida para ser executada quando um objeto é perdido.

arg

Opcional. Uma tupla contendo argumentos para passar para a função de callback. Consulte Funções com Parâmetros para obter mais informações.

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)

Construtores#

Os construtores são utilizados para criar manualmente Optical , que são necessários para configurar um Sensor Óptico fora do VEXcode.

Optical#

Optical cria um sensor óptico.

Usage:
Optical(smartport)

Parâmetro

Descrição

smartport

A porta inteligente à qual o sensor ótico está ligado é representada por PORTx, onde x é o número da porta.

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