光学#

導入#

光学センサーは、反射光を利用して物体を検出したり、色を識別したり、明るさや色相を測定したりする、光ベースのセンサーです。

センサー内部のライトの明るさも設定できます。これらのツールは、色付きの物体、照明条件、センサーからのフィードバックにリアルタイムで反応する必要のあるプログラムに最適です。

このページでは、例として optical_1 という光学センサー名を使用しています。必要に応じて、ご自身で設定した名前に置き換えてください。

以下にすべてのメソッドの一覧を示します。

操作 — 光学センサーのLEDをオンまたはオフにします。

  • set_light — LEDのオンまたはオフの状態を設定します。

ミューテーター — LEDの明るさと物体検出設定を調整します。

ゲッター — オブジェクトの存在、色、明るさ、色相、RGB、およびセンサーの状態を読み取ります。

  • is_near_object — 検出されたオブジェクトが光学センサーの近くにあるかどうかを返します。

  • color — 検出された最も近い色の一致を返します。

  • brightness — 検出されたオブジェクトの明るさを返します。

  • hue — 検出されたオブジェクトの色相を返します。

  • rgb — 光学センサーによって検出された RGB 値を返します。

  • installed — 光学センサーがブレインに接続されているかどうかを返します。

コールバック — オブジェクトが検出または消失したときにコードを実行します。

  • object_detected — オブジェクトが検出されたときに呼び出される関数を登録します。

  • object_lost — オブジェクトが失われたときに呼び出される関数を登録します。

コンストラクター — 光学センサーを手動で初期化および構成します。

  • Optical — 光学センサーを作成します。

行動#

set_light#

set_light は、光学センサーの LED をオン、オフ、または設定された明るさレベルに設定します。

Usage:
optical_1.set_light(state)

パラメータ

説明

state

ライトの状態、または0~100の範囲の電力パーセンテージを設定します。状態は次のいずれかになります。

  • LedStateType.OFF (0パーセント)
  • LedStateType.ON (100パーセント)
  • integer — 0~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)

変異誘発者#

set_light_power#

set_light_power は、光学センサーのライトの明るさを設定します。LEDが点灯していない場合、このメソッドはLEDを点灯させます。

Usage:
optical_1.set_light_power(value)

パラメータ

説明

value

ライトの明るさを0~100パーセントの範囲で設定する電力レベル。

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

object_detect_threshold をobject_detect_threshold 設定すると、センサーが物体を検出できる範囲が設定されます。このメソッドは、新しく設定されたしきい値も返します。

255に近い数値は範囲が狭いことを示し、0に近い数値は範囲が広いことを示します。

Usage:
optical_1.object_detect_threshold(value)

パラメータ

説明

value

0~255の範囲の数値。0を指定すると、現在の値が返されます。

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)

ゲッター#

is_near_object#

is_near_object は、光学センサーが物体の近くにあるかどうかを返します。

  • True — センサーが物体の近くにある。

  • False — センサーが物体の近くにありません。

Usage:
optical_1.is_near_object()

パラメータ

説明

このメソッドにはパラメータがありません。

# 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 は、以下の色の中から光学センサーによって検出された定義済みの色を返します。

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

パラメータ

説明

このメソッドにはパラメータがありません。

# 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 光学センサーによって検出された明るさを返します。

パーセンテージが高いほど、光学センサーがより多くの光を検出します。パーセンテージが低いほど、光学センサーが検出する光が少ないことを意味します。

Usage:
optical_1.brightness(readraw)

パラメータ

説明

readraw

オプション。明るさの生データではなくパーセンテージで読み取るかどうかを示すブール値:

  • True — 生データを返します。
  • False (デフォルト) — 明るさをパーセンテージで返します。

hue#

hue 、光学センサーによって検出された色相の値を、0~359.99度の範囲の浮動小数点数として返します。

色相とは、下図に示すように、色相環上の数字を用いて色を表現する方法です。

円形のカラーホイールには、周囲に度数が表示され、上部の0°から360°まで30度刻みで増加する、色相の全スペクトルが表示されています。

Usage:
optical_1.hue()

パラメータ

説明

このメソッドにはパラメータがありません。

# 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 、光学センサーによって検出された赤、緑、青、および輝度の値をタプルとして返します。

Usage:
optical_1.rgb(raw)

パラメータ

説明

raw

オプション。生の値を返すか処理済みの値を返すかを決定するブール値:

  • True — 生の値を返します。
  • False (デフォルト) — 生の値を返しません。
# 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#

installed 、光学センサーがブレインに接続されているかどうかを示すブール値を返します。

  • True — 光学センサーは脳に接続されています。

  • False — 光学センサーは脳に接続されていません。

Usage:
optical_1.installed()

パラメータ

説明

このメソッドにはパラメータがありません。

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

折り返し電話#

object_detected#

object_detected オブジェクトが検出されたときのコールバック関数を登録します。

Usage:
optical_1.object_detected(callback, arg)

パラメータ

説明

callback

オブジェクトが検出されたときに実行されるように事前に定義された 関数。

arg

オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメータを持つ関数を参照してください。

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 は、光学センサーが検出したオブジェクトを失ったときに呼び出されるコールバック関数を登録します。

Usage:
optical_1.object_lost(callback, arg)

パラメータ

説明

callback

オブジェクトが失われたときに実行されるように事前に定義された 関数。

arg

オプション。コールバック関数に渡す引数を含むタプル。詳細については、パラメータを持つ関数を参照してください。

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)

建設業者#

コンストラクタは、VEXcode の外部で光学センサーを構成するために必要な、 Optical オブジェクトを手動で作成するために使用されます。

Optical#

Optical 光センサーを作成します。

Usage:
Optical(smartport)

パラメータ

説明

smartport

光センサーが接続されているスマートポートは、PORTx と表記され、x はポート番号です。

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