Olho#

Introdução#

O sensor ocular VEX GO consegue detetar objetos e cores. Também pode informar a quantidade de luz refletida de volta para o sensor e o valor de matiz da cor detetada.

O sensor ocular tem uma luz que pode ser ligada ou desligada para ajudar a ver objetos e cores com mais clareza. O sensor ocular pode também utilizar uma escala de NEAR (LONGE) ou de FAR DEFAULTA) para detetar objetos a diferentes distâncias.

O sensor ocular pode ser posicionado em diferentes locais, dependendo da configuração. Por exemplo, na configuração Code Base 2.0 - Eye Forward, o sensor ocular está virado para a frente. Já nas definições Code Base 2.0 - Eye Down, Code Base 2.0 - Eye + Electromagnet e Super Code Base 2.0, o sensor ocular está virado para baixo.

Nos exemplos abaixo, o sensor ocular configurado é nomeado como eyeEste nome é utilizado nos exemplos para chamar os métodos da classe Eye.

Existem muitas formas de programar o sensor ocular. Abaixo está uma lista de todos os métodos de programação ocular:

Modificadores — Ajustam as definições do sensor ocular.

  • set_light — Liga ou desliga a luz do sensor ocular.

  • set_range — Define a que distância o sensor ocular consegue detetar um objeto.

  • set_light_power — Define o nível de potência luminosa do sensor ocular.

Getters — Devolvem o que o sensor ocular deteta.

  • get_color — Devolve a cor detectada pelo sensor ocular.

  • get_hue — Devolve a tonalidade detectada pelo sensor ocular.

  • get_brightness — Retorna o brilho detectado pelo sensor ocular.

  • is_object_detected — Retorna se o sensor ocular deteta um objeto dentro do alcance.

  • is_color_detected — Retorna se o sensor ocular deteta uma cor específica.

Mutantes#

set_light#

set_light liga ou desliga a luz do sensor ocular.

Usage:
eye.set_light(state)

Parâmetros

Descrição

state

Estado da luz do sensor ocular: ON ou OFF.

# Build Used: Super Code Base 2.0
def main():
    # Turn the light on and off
    while True:
        eye.set_light(ON)
        wait(2, SECONDS)
        eye.set_light(OFF)
        wait(2, SECONDS)

# Start threads — Do not delete
start_thread(main)

set_range#

set_range define a distância máxima a que um objeto pode estar do sensor ocular antes de ser detetado.

Todos os projetos começam com o sensor ocular configurado para o alcance FAR por defeito.

Usage:
eye.set_range(distance)

Parâmetros

Descrição

distance

O alcance de deteção de objetos do sensor ocular é o seguinte: NEAR deteta objetos até 18 milímetros de distância, enquanto FAR deteta objetos até 40 milímetros de distância.

# Build Used: Code Base 2.0 - Eye Forward
def main():
    # Drive to an object with different ranges
    eye.set_range(FAR)
    drivetrain.drive(FORWARD)
    wait(0.2, SECONDS)
    while not eye.is_object_detected():
        wait(0.2, SECONDS)
    drivetrain.drive_for(REVERSE, 100, MM)
    # Closer detection range
    eye.set_range(NEAR)
    drivetrain.drive(FORWARD)
    wait(0.2, SECONDS)
    while not eye.is_object_detected():
        wait(0.2, SECONDS)
    drivetrain.stop()


# Start threads — Do not delete
start_thread(main)

set_light_power#

set_light_power define a intensidade da luz do sensor ocular. Esta luz pode ajudar o sensor a detetar objetos e cores com mais clareza.

Uma percentagem maior torna a luz mais brilhante. Uma percentagem mais baixa torna a luz mais fraca.

Se a luz do sensor ocular estiver desligada, definir a potência da luz acima de 0% irá acendê-la.

Se a luz do sensor ocular estiver acesa, definir a potência da luz para 0% irá desligá-la.

Usage:
eye.set_light_power(value)

Parâmetros

Descrição

value

O nível de brilho para o qual o sensor ocular deve ser configurado, de 0% a 100%. Utilize números inteiros.

# Build Used: Super Code Base 2.0
def main():
    # Turn on the light at different brightnesses
    eye.set_light_power(25)
    wait(2, SECONDS)
    eye.set_light_power(50)
    wait(2, SECONDS)
    eye.set_light_power(100)

# Start threads — Do not delete
start_thread(main)

Getters#

get_color#

get_color devolve a cor detectada pelo sensor ocular.

Este método pode retornar:

  • RED — Um valor de matiz entre 340° - 20°

  • GREEN — Um valor de matiz entre 75° - 154°

  • BLUE — Um valor de matiz entre 160° - 254°

  • NONE — Nenhuma das cores disponíveis foi detectada.

Usage:
eye.get_color()

Parâmetros

Descrição

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

# Build Used: Super Code Base 2.0
def main():
    # Stop when red is detected
    drivetrain.drive(FORWARD)
    while True:
        if eye.get_color() == RED:
            break
        wait(0.2, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_thread(main)

get_hue#

get_hue devolve a cor detectada pelo sensor ocular como um número inteiro de 0 a 359,00 graus.

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

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:
eye.get_hue()

Parâmetros

Descrição

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

# Build Used: Code Base 2.0 - Eye Forward
def main():
    # Display the hue of a pink GO piece
    while True:
        console.clear()
        if 10 < eye.get_hue() < 40:
            console.print("Pink!")
            wait(0.1,SECONDS)
        else:
            console.print("Not pink.")
            wait(0.1,SECONDS)

# Start threads — Do not delete
start_thread(main)

get_brightness#

get_brightness devolve o brilho da luz detectada, como um número inteiro de 0% a 100%.

Uma percentagem mais elevada significa que mais luz é refletida de volta para o sensor ocular. Uma percentagem mais baixa significa que menos luz é refletida de volta.

Usage:
eye.get_brightness()

Parâmetros

Descrição

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

# Build Used: Super Code Base 2.0
def main():
    # Monitor the brightness until red is detected
    monitor_sensor("eye.get_brightness")
    drivetrain.drive(FORWARD)
    while not eye.get_color() == RED:
        wait(0.2, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_thread(main)

is_object_detected#

is_object_detected devolve um Boolean que informa se o sensor ocular detecta ou não um objecto dentro do alcance.

  • True — O sensor ocular deteta um objeto.

  • False — O sensor ocular não detetou qualquer objeto.

O alcance de deteção pode ser alterado utilizando set_range.

Usage:
eye.is_object_detected()

Parâmetros

Descrição

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

# Build Used: Code Base 2.0 - Eye Forward
def main():
    # Drive forward until an object is detected
    drivetrain.drive(FORWARD)
    wait(0.2, SECONDS)
    while not eye.is_object_detected():
        wait(0.5, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_thread(main)

is_color_detected#

is_color_detected devolve um Boolean que informa se o sensor ocular detecta uma cor especificada, com base no valor de matiz detectado.

  • True — O sensor ocular deteta a cor selecionada.

  • False — O sensor ocular não detetou a cor selecionada.

O sensor ocular funciona melhor quando o objeto está suficientemente perto para ser detetado e a iluminação é clara.

Usage:
eye.is_color_detected(color)

Parâmetros

Descrição

color

A cor que o sensor ocular deve verificar:

  • BLUE – Valor de matiz entre 160° e 254°.
  • GREEN – Valor de matiz entre 75° e 154°.
  • NONE
  • RED – Valor de matiz entre 340° e 20°.

# Build Used: Super Code Base 2.0
def main():
    # Drive forward until a green object is detected
    drivetrain.drive(FORWARD)
    wait(0.2, SECONDS)
    while not eye.is_color_detected(GREEN):
        wait(0.5, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_thread(main)