目#

導入#

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 は、アイセンサーのライトをオンまたはオフにします。

Usage:
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 範囲に設定された状態で開始されます。

Usage:
eye.set_range(distance)

パラメータ

説明

distance

アイセンサーの物体検出範囲。0 NEAR 最大18ミリメートル離れた物体を検出し、 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%に設定するとライトが消灯します。

Usage:
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 — 利用可能な色は検出されませんでした。

Usage:
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度刻みで増加する、色相の全スペクトルが表示されています。

Usage:
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% までの整数で返します。

パーセンテージが高いほど、より多くの光がアイセンサーに反射されます。パーセンテージが低いほど、反射される光は少なくなります。

Usage:
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を使用して変更できます。

Usage:
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 — アイセンサーが選択された色を検出しません。

視線センサーは、対象物が検出可能な距離にあり、かつ照明が良好な場合に最も効果的に機能します。

Usage:
eye.is_color_detected(color)

パラメータ

説明

color

視線センサーがチェックする色:

  • BLUE – 色相値が160°~254°。
  • GREEN – 色相値が75°~154°。
  • NONE
  • RED – 色相値が340°~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)