眼睛#

介紹#

VEX GO 眼部感應器可偵測物體和顏色。它還可以報告反射回感測器的光量以及檢測到的顏色色調值。

眼部感應器隨附一個可開啟或關閉的指示燈,以幫助其更清晰地識別物體和顏色。眼部感測器還可以使用 NEAR (遠)或 FAR (遠)的探測範圍來偵測不同距離的物體。

根據不同的建造版本,眼部感測器可以放置在不同的位置。例如,Code Base 2.0 - Eye Forward 構建版本中的眼部感應器朝前。 Code Base 2.0 - Eye Down 建置版本、Code Base 2.0 - Eye + Electromagnet 建置版本以及 Super Code Base 2.0 建置版本中的眼部感應器則朝下。

在以下範例中,配置的眼感測器被命名為 eye範例中使用此名稱來呼叫 Eye 類別方法。

眼動追蹤感測器的編碼方式有很多種。以下列出了所有眼動追蹤方法:

變異器 — 調整眼部感應器設定。

  • set_light — 開啟或關閉眼睛感應器的燈。

  • set_range — 設定眼動感應器可以偵測到物體的距離。

  • set_light_power — 設定眼睛感應器的光功率等級。

獲取器 — 返回眼部感應器偵測到的內容。

  • get_color — 傳回眼睛感應器偵測到的顏色。

  • get_hue — 返回眼睛感應器偵測到的色調。

  • get_brightness — 傳回眼睛感應器偵測到的亮度。

  • is_object_detected — 返回眼感應器是否偵測到範圍內的物體。

  • is_color_detected — 返回眼睛感應器是否偵測到特定顏色。

變異體#

set_light#

set_light 開啟或關閉眼部感應器的燈。

用法:
eye.set_light(state)

參數

描述

state

眼睛感應器的指示燈狀態: ON 或 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 設定物體與眼部感應器之間的最大距離,超過該距離則無法被偵測到。

每個項目開始時,眼動感測器預設為 FAR 範圍。

用法:
eye.set_range(distance)

參數

描述

distance

眼部感測器的物體偵測範圍。 0 近距離 NEAR 物體,而 FAR 可偵測最遠 40 毫米的物體。

# 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 設定眼部感應器的燈光亮度。燈光可以幫助眼部感應器更清晰地偵測物體和顏色。

百分比越高,燈光越亮;百分比越低,燈光越暗。

如果眼部感應器的燈是關閉的,將燈光功率設定為 0% 以上即可開啟燈。

如果眼部感應器的指示燈亮著,將燈光功率設定為 0% 將關閉指示燈。

用法:
eye.set_light_power(value)

參數

描述

value

設定眼部感光元件燈光的亮度,範圍從 0% 到 100%。請使用整數。

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

獲取器#

get_color#

get_color 返回眼睛感應器偵測到的顏色。

此方法可以返回:

  • RED — 色調值介於 340° 至 20° 之間

  • GREEN — 色調值介於 75° 至 154° 之間

  • BLUE — 色調值介於 160° 至 254° 之間

  • NONE — 未偵測到任何可用顏色。

用法:
eye.get_color()

參數

描述

此方法沒有參數。

# 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 返回眼睛感應器偵測到的顏色,以 0 到 359.00 度之間的整數表示。

色相是用色輪上的數字來描述顏色的一種方法。

一個圓形色輪,顯示完整的色調光譜,邊緣標有度數,從頂部的 0° 到 360°,以 30° 為增量遞增。

用法:
eye.get_hue()

參數

描述

此方法沒有參數。

# 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 傳回偵測到的光的亮度,以 0% 到 100% 之間的整數表示。

百分比越高,表示反射回眼部感應器的光線越多;百分比越低,代表反射回的光線越少。

用法:
eye.get_brightness()

參數

描述

此方法沒有參數。

# 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 回傳一個 Boolean,報告眼感測器是否偵測到範圍內的物體。

  • True — 眼部感應器偵測到物體。

  • False — 眼部感應器未偵測到物體。

可以使用 set_range來更改檢測範圍。

用法:
eye.is_object_detected()

參數

描述

此方法沒有參數。

# 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 回傳一個 Boolean,該值根據偵測到的色調值報告眼睛感測器是否偵測到指定的顏色。

  • True — 眼睛感應器偵測到所選顏色。

  • False — 眼睛感應器未偵測到所選顏色。

當物體距離夠近且光線充足時,眼部感應器的工作效果最佳。

用法:
eye.is_color_detected(color)

參數

描述

color

The color for the Eye Sensor to check:

  • BLUE – Hue value between 160° and 254°.
  • GREEN – Hue value between 75° and 154°.
  • NONE
  • RED – Hue value between 340° and 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)