Quang học#

Giới thiệu#

Cảm biến quang học là một loại cảm biến dựa trên ánh sáng, sử dụng ánh sáng phản xạ để phát hiện vật thể, nhận diện màu sắc, đo độ sáng và sắc độ.

Bạn cũng có thể cấu hình độ sáng của đèn bên trong cảm biến. Những công cụ này rất lý tưởng cho các chương trình cần phản ứng với các vật thể có màu sắc, điều kiện ánh sáng hoặc phản hồi từ cảm biến trong thời gian thực.

Trang này sử dụng optical_1 làm ví dụ về tên Cảm biến quang học. Hãy thay thế nó bằng tên do bạn cấu hình nếu cần.

Dưới đây là danh sách tất cả các phương pháp:

Thao tác — Bật hoặc tắt đèn LED của cảm biến quang học.

  • set_light — Đặt trạng thái bật hoặc tắt của đèn LED.

Bộ điều chỉnh — Điều chỉnh độ sáng đèn LED và cài đặt nhận diện đối tượng.

Các phương thức lấy dữ liệu — Đọc thông tin về sự hiện diện của đối tượng, màu sắc, độ sáng, sắc độ, RGB và trạng thái cảm biến.

  • is_near_object — Trả về liệu vật thể được phát hiện có ở gần Cảm biến quang học hay không.

  • color — Trả về màu phù hợp được phát hiện gần nhất.

  • brightness — Trả về độ sáng của một đối tượng được phát hiện.

  • hue — Trả về sắc độ của một đối tượng được phát hiện.

  • rgb — Trả về các giá trị RGB được phát hiện bởi Cảm biến quang học.

  • installed — Trả về trạng thái liệu Cảm biến quang học có được kết nối với Bộ não hay không.

Hàm gọi lại — Thực thi đoạn mã khi phát hiện hoặc mất một đối tượng.

  • object_detected — Đăng ký một hàm sẽ được gọi khi một đối tượng được phát hiện.

  • object_lost — Đăng ký một hàm sẽ được gọi khi một đối tượng bị mất.

Hàm khởi tạo — Tự tay khởi tạo và cấu hình Cảm biến quang học.

  • Optical — Tạo ra một cảm biến quang học.

Hành động#

set_light#

set_light thiết lập đèn LED của Cảm biến quang học ở trạng thái bật, tắt hoặc mức độ sáng đã đặt.

Usage:
optical_1.set_light(state)

Thông số

Sự miêu tả

state

Trạng thái để thiết lập ánh sáng hoặc phần trăm công suất trong phạm vi từ 0 đến 100. Trạng thái có thể là một trong các trạng thái sau:

  • LedStateType.OFF (0 phần trăm)
  • LedStateType.ON (100 phần trăm)
  • integer — Giá trị độ sáng được cho dưới dạng số nguyên từ 0 đến 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)

Biến đổi#

set_light_power#

set_light_power thiết lập độ sáng của đèn cảm biến quang học. Nếu đèn LED chưa sáng, phương thức này cũng sẽ bật đèn LED.

Usage:
optical_1.set_light_power(value)

Thông số

Sự miêu tả

value

Mức công suất để điều chỉnh độ sáng từ 0 đến 100% (tính theo phần trăm).

# 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 thiết lập phạm vi mà cảm biến có thể phát hiện vật thể. Phương thức này cũng trả về ngưỡng mới được thiết lập.

Các số càng gần 255 thì phạm vi càng nhỏ, trong khi các số càng gần 0 thì phạm vi càng lớn.

Usage:
optical_1.object_detect_threshold(value)

Thông số

Sự miêu tả

value

Một số nằm trong khoảng từ 0 đến 255. Giá trị 0 sẽ trả về giá trị hiện tại.

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)

Người nhận#

is_near_object#

is_near_object trả về giá trị cho biết Cảm biến quang có ở gần vật thể nào không.

  • True — Cảm biến ở gần vật thể.

  • False — Cảm biến không ở gần vật thể.

Usage:
optical_1.is_near_object()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# 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 trả về màu sắc được xác định trước do Cảm biến quang học phát hiện từ các màu bên dưới:

  • BLACK

  • BLUE

  • CYAN

  • GREEN

  • ORANGE

  • PURPLE

  • RED

  • TRANSPARENT

  • WHITE

  • YELLOW

Usage:
optical_1.color()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# Stop the robot if the Optical Sensor 
# detects red
while True:
    if optical_1.color() == Color.RED:
        drivetrain.stop()
    else:
        drivetrain.turn(RIGHT)

brightness#

Độ sáng brightness trả về độ sáng được cảm biến quang học phát hiện.

Tỷ lệ phần trăm càng cao nghĩa là cảm biến quang học càng thu nhận được nhiều ánh sáng hơn. Tỷ lệ phần trăm càng thấp nghĩa là cảm biến quang học càng thu nhận được ít ánh sáng hơn.

Usage:
optical_1.brightness(readraw)

Thông số

Sự miêu tả

readraw

Tùy chọn. Một giá trị Boolean để đọc dữ liệu độ sáng thô thay vì phần trăm:

  • True — Trả về dữ liệu thô.
  • False (mặc định) — Trả về độ sáng dưới dạng phần trăm.

hue#

hue trả về giá trị màu sắc được cảm biến quang học phát hiện dưới dạng số thực trong phạm vi từ 0 đến 359,99 độ.

Sắc độ là một cách để mô tả màu sắc bằng các con số xung quanh vòng tròn màu, như hình bên dưới.

Một vòng tròn màu hiển thị toàn bộ quang phổ màu được dán nhãn bằng các giá trị độ xung quanh chu vi, tăng dần theo từng bước 30 độ từ 0° ở trên cùng đến 360°.

Usage:
optical_1.hue()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

# 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 trả về các giá trị màu đỏ, xanh lục, xanh lam và độ sáng được cảm biến quang học phát hiện dưới dạng một Tuple.

Usage:
optical_1.rgb(raw)

Thông số

Sự miêu tả

raw

Tùy chọn. Một giá trị Boolean để xác định xem bạn trả về giá trị thô hay giá trị đã xử lý:

  • True — Trả về giá trị thô.
  • False (mặc định) — Không trả về giá trị thô.
# 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 trả về giá trị Boolean cho biết cảm biến quang học có được kết nối với bộ xử lý trung tâm hay không.

  • True — Cảm biến quang học được kết nối với não bộ.

  • False — Cảm biến quang học không được kết nối với não bộ.

Usage:
optical_1.installed()

Thông số

Sự miêu tả

Phương pháp này không có tham số.

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

Gọi lại#

object_detected#

object_detected đăng ký một hàm gọi lại khi phát hiện thấy một đối tượng.

Usage:
optical_1.object_detected(callback, arg)

Thông số

Sự miêu tả

callback

Một hàm được định nghĩa trước để thực thi khi một đối tượng được phát hiện.

arg

Tùy chọn. Một bộ chứa các đối số để truyền cho hàm gọi lại. Xem Hàm có tham số để biết thêm thông tin.

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 đăng ký một hàm gọi lại khi Cảm biến quang học mất dấu vật thể đã phát hiện.

Usage:
optical_1.object_lost(callback, arg)

Thông số

Sự miêu tả

callback

Một hàm được định nghĩa trước để thực thi khi một đối tượng bị mất.

arg

Tùy chọn. Một bộ chứa các đối số để truyền cho hàm gọi lại. Xem Hàm có tham số để biết thêm thông tin.

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)

Các hàm tạo#

Các hàm tạo được sử dụng để tạo thủ công Optical , cần thiết cho việc cấu hình Cảm biến quang học bên ngoài VEXcode.

Optical#

Optical tạo ra một Cảm biến quang học.

Usage:
Optical(smartport)

Tham số

Sự miêu tả

smartport

Cổng thông minh mà cảm biến quang được kết nối, được viết là PORTx, trong đó x là số thứ tự của cổng.

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