光學感測器#

介紹#

V5 光學感測器結合了 RGB 色彩感測器和接近感測器,能夠偵測附近物體的顏色、亮度和是否存在。它還可以利用內建 LED 燈照亮物體,從而實現更精確的檢測。

VEX V5 光學感測器。

本頁面使用 optical_sensor 作為範例光纖感測器名稱。請根據需要將其替換為您自己配置的名稱。

以下是可用方法清單:

  • set_light – 開啟或關閉光學感測器的 LED。

  • set_light_power – 設定光學感測器的光功率等級。

  • is_near_object – 返迴光學感測器是否偵測到範圍內的物體。

  • color – 返迴光學感測器偵測到的顏色。

  • brightness – 傳回物體反射的光量。

  • hue – 返迴光學感測器偵測到的色調。

  • object_detected – 註冊一個當光學感測器偵測到物體時要呼叫的函數。

  • object_lost – 註冊一個當光學感測器遺失物體時要呼叫的函數。

建構函式 - 手動初始化光學感測器。

  • Optical – 建立光學感測器。

設定燈光#

set_light 用於開啟或關閉光學感測器的 LED。這有助於提高感測器檢測顏色的精度。

Usage:
optical_sensor.set_light(state)

參數

描述

狀態

Sets the LED on or off. LEDStateType.ON turns the light on at 100% brightness. LEDStateType.OFF turns it off.

# Turn on the sensor's LED
optical_sensor.set_light(LEDStateType.ON)

設定燈光功率#

set_light_power 設定光學感測器的 LED 亮度。燈光可以幫助光學感測器更清晰地偵測物體和顏色。

如果光感應器的燈熄滅,將燈光功率設定為 0% 以上即可開啟燈。

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

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

Usage:
optical_sensor.set_light_power(percent, units)

參數

描述

百分比

將 LED 亮度設定為整數。

單位

可選。亮度單位: PERCENT

# Turn on the sensor's light at half brightness
optical_sensor.set_light_power(50, PERCENT)

靠近對象#

is_near_object 傳回一個布林值,指示光學感測器是否偵測到範圍內的物體。

  • True – 光學感測器偵測到物體。

  • False – 光學感測器未偵測到物體。

Usage:
optical_sensor.is_near_object()

參數

描述

此方法沒有參數。

# Drive forward until an object is found
drivetrain.drive(FORWARD)
while not optical_sensor.is_near_object():
  pass
drivetrain.stop()

顏色#

color 傳回一個 Color 類 實例,該實例基於偵測到的色調值。這些實例可以與預先定義的 Color 物件進行比較,以建立條件語句。

可選顏色有:

  • Color.BLACK

  • Color.WHITE

  • Color.RED - 色調值介於 340° 至 20° 之間

  • Color.GREEN - 色調值介於 80° 至 140° 之間

  • Color.BLUE - 色調值介於 200° - 240° 之間

  • Color.YELLOW - 色調值介於 40° 至 60° 之間

  • Color.ORANGE - 色調值介於 20° 至 40° 之間

  • Color.PURPLE - 色調值介於 240° - 280° 之間

  • Color.CYAN - 色相值介於 140° - 200° 之間

注意: 光學感測器正在尋找與指定顏色相符的色調範圍。有關檢測特定色調範圍的信息,請參閱 hue。

Usage:
optical_sensor.color()

參數

描述

此方法沒有參數。

# Drive forward until red is found
drivetrain.drive(FORWARD)
while not optical_sensor.color() == Color.RED:
  pass
drivetrain.stop()

亮度#

brightness 傳回物體反射的光量,以百分比表示的十進制數 (float)。

百分比越高,表示反射迴光學感測器的光線越多;百分比越低,表示反射回的光線越少。

Usage:
optical_sensor.brightness()

參數

描述

此方法沒有參數。

色調#

hue 傳回偵測到的顏色的色調值,以 0 到 359 之間的十進位數 (float) 表示。

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

VEX 色輪,顯示圍繞圓週的顏色度數,紅色為 0 度,隨著數值增加,顏色依序過渡到彩虹的顏色。

Usage: optical_sensor.hue()

參數

描述

此方法沒有參數。

# Look for the color pink using hue
while True:
  brain.screen.clear_screen()
  brain.screen.set_cursor(1, 1)

  if 300 < optical_sensor.hue() < 359:
    brain.screen.print("This is pink!")
  else:
    brain.screen.print("No pink detected!")

偵測到目標#

object_detected 註冊一個函數,當光學感測器偵測到新物體時,該函數將會被呼叫。

Usage:
optical_sensor.object_detected(callback, arg)

參數

描述

callback

先前定義的 函數,當光學感測器偵測到新物體時執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的函數。

def my_function():
  brain.screen.print("Optical Sensor detected an object")

# Call my_function whenever optical_sensor detects an object
optical_sensor.object_detected(my_function)

遺失對象#

object_lost 註冊一個函數,當光學感測器遺失偵測到的物件時,該函數將會被呼叫。

Usage:
optical_sensor.object_lost(callback, arg)

參數

描述

callback

先前定義的 函數,當光學感測器遺失偵測到的物件時執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的函數。

def my_function():
  brain.screen.print("Optical Sensor lost an object")

# Call my_function whenever optical_sensor loses an object
optical_sensor.object_lost(my_function)

建構函數#

建構函式用於手動建立 Optical 對象,這是在 VEXcode 之外配置光學感測器所必需的。

Optical#

Optical 創建一個光學感測器。

Usage:
Optical(smartport)

範圍

描述

smartport

光感測器所連接的智慧型端口,記為 Ports.PORTx ,其中 x 為端口號。

# Create an Optical Sensor in Port 10
optical_sensor = Optical(Ports.PORT10)