Cảm biến quang học#

Giới thiệu#

Lớp quang học optical được sử dụng để truy cập dữ liệu từ Cảm biến quang học EXP. Nó sử dụng ánh sáng phản xạ để phát hiện vật thể, nhận dạng màu sắc và đo độ sáng cũng như sắc độ.

Hàm tạo lớp#

optical(
    int32_t index );

Lớp Destructor#

Destroys the optical object and releases associated resources.

virtual ~optical();

Thông số#

Tham số

Kiểu

Sự miêu tả

index

int32_t

Cổng thông minh mà cảm biến quang được kết nối, được viết dưới dạng PORTx, trong đó x là số cổng (ví dụ: PORT1).

Ví dụ#

// Create an optical instance in Port 1
optical Optical1 = optical(PORT1);

Chức năng thành viên#

Lớp optical bao gồm các hàm thành viên sau:

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

  • setLightPower — Đặt mức công suất ánh sáng của Cảm biến quang học.

  • isNearObject — Trả về liệu Cảm biến quang có phát hiện vật thể trong phạm vi hay không.

  • color — Trả về màu được phát hiện bởi Cảm biến quang học.

  • brightness — Trả về lượng ánh sáng phản xạ từ vật thể.

  • hue — Trả về sắc độ được phát hiện bởi Cảm biến quang học.

  • objectDetected — Đăng ký một hàm sẽ được gọi khi Cảm biến quang học phát hiện một vật thể.

  • objectLost — Đăng ký một hàm sẽ được gọi khi Cảm biến quang học mất một đối tượng.

Trước khi gọi bất kỳ hàm thành viên nào của lớp optical , cần phải tạo một thể hiện của optical , như được hiển thị bên dưới:

/* This constructor is required when using VS Code.
Optical Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create an optical instance
optical Optical1 = optical(
    PORT1);   // Smart Port 1

setLight#

Chức năng này cho phép bật hoặc tắt đèn LED của cảm biến quang học. Ánh sáng có thể giúp cảm biến quang học nhận diện vật thể và màu sắc rõ nét hơn.

Available Functions
void  setLight(ledState state);

Parameters

Tham số

Kiểu

Sự miêu tả

state

ledState

Sets the LED on or off. ledState::on turns the LED on at 100% brightness. ledState::off turns it off.

Return Values

Hàm này không trả về giá trị nào.

Examples
// Turn on LED with previous intensity.
Optical.setLight(ledState::on);

setLightPower#

Điều chỉnh độ sáng của đèn LED trên cảm biến quang học. Ánh sáng này giúp cảm biến quang học phát hiện vật thể và màu sắc rõ nét hơn.

Nếu đèn của cảm biến quang học đang tắt, việc đặt công suất đèn trên 0% sẽ bật đèn lên.

Nếu đèn của cảm biến quang đang bật, việc đặt công suất đèn ở mức 0% sẽ tắt đèn.

Tỷ lệ phần trăm càng cao thì ánh sáng càng sáng. Tỷ lệ phần trăm càng thấp thì ánh sáng càng mờ.

Available Functions
void setLightPower( 
      int32_t      intensity, 
      percentUnits units = percent );

Parameters

Tham số

Kiểu

Sự miêu tả

intensity

int32_t

Mức công suất để điều chỉnh ánh sáng từ 0 đến 100.

units

percentUnits

Đơn vị biểu thị cường độ ánh sáng: percent phần pct phần trăm

Return Values

Hàm này không trả về giá trị nào.

Examples
// Set the light power to 50 percent.
Optical.setLightPower(50, percent);

isNearObject#

Trả về giá trị này nếu cảm biến quang học phát hiện vật thể ở gần.

Available Functions
bool  isNearObject();

Parameters

Hàm này không chấp nhận bất kỳ tham số nào.

Return Values

Hàm này trả về giá trị Boolean cho biết có phát hiện thấy vật thể ở gần hay không:

  • true – Cảm biến quang học phát hiện vật thể.

  • false – Cảm biến quang học không phát hiện vật thể.

Examples
// If an object is detected by the Optical Sensor, print
// "near object".
if (Optical.isNearObject()){
  Brain.Screen.print("near object");
}

color#

Trả về màu sắc được cảm biến quang học phát hiện.

Available Functions
vex::color  color();

Parameters

Hàm này không chấp nhận bất kỳ tham số nào.

Return Values

Màu được Cảm biến quang học phát hiện là một trường hợp của lớp màu.

Các màu sắc có thể là:

  • black

  • white

  • red - Giá trị màu sắc nằm giữa 340° - 20°

  • green - Giá trị màu sắc nằm giữa 80° - 140°

  • blue - Giá trị màu sắc nằm trong khoảng 200° - 240°

  • yellow - Giá trị màu sắc nằm giữa 40° - 60°

  • orange - Giá trị màu sắc nằm giữa 20° - 40°

  • purple - Giá trị màu sắc nằm trong khoảng 240° - 280°

  • cyan - Giá trị màu sắc nằm trong khoảng 140° - 200°

Examples
// Set a variable, detectColor, to the color detected by the
// Optical Sensor
color detectColor = Optical.color();

// Print the color detected by the Optical Sensor
// to the Brain's screen
Brain.Screen.print(detectColor);

brightness#

Trả về lượng ánh sáng phản xạ từ vật thể.

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

Available Functions
double  brightness(bool bRaw = false);

Parameters

Tham số

Kiểu

Sự miêu tả

bRaw

bool

Một giá trị Boolean để đọc dữ liệu độ sáng thô thay vì phần trăm. Giá trị mặc định là false.

Return Values

Giá trị kiểu double biểu thị độ sáng được cảm biến quang học phát hiện trong khoảng 0 - 100%, hoặc giá trị kiểu double biểu thị dữ liệu thô được cảm biến thu thập.

Examples
// Set a variable, brightness, to the value of the brightness
// detected by the Optical Sensor
double brightness = Optical.brightness();

// Print the brightness detected by the Optical Sensor to the
// Brain's screen
Brain.Screen.print(brightness);

hue#

Trả về giá trị sắc độ của màu sắc được phát hiện.

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.

Vòng tròn màu VEX hiển thị độ đậm nhạt của các màu xung quanh một vòng tròn, với màu đỏ ở 0 độ và chuyển dần qua cầu vồng khi giá trị tăng lên.

Available Functions
double hue();

Parameters

Hàm này không chấp nhận bất kỳ tham số nào.

Return Values

Giá trị kiểu double biểu thị độ màu được cảm biến quang học phát hiện trong khoảng 0 — 359,99.

Examples
// Set a variable, hue, to the value of the hue detected
// by the Optical Sensor.
double hue = Optical.hue();

objectDetected#

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

Available Functions
void objectDetected(void (* callback)(void));

Parameters

Tham số

Kiểu

Sự miêu tả

callback

void (*)(void)

Một hàm được định nghĩa trước đó sẽ được thực thi khi Cảm biến quang học phát hiện một vật thể mới.

Return Values

Hàm này không trả về giá trị nào.

Examples

Xác định hàm gọi lại (bên ngoài int main())

// Called when the Optical Sensor detects an object
void detected() {
  // The Brain will print that the Optical Sensor detected an
  // object to the Brain's screen.
  Brain.Screen.print("object detected");
}

Đăng ký hàm gọi lại bên trong int main()

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Run when the Optical Sensor detects an object.
  Optical.objectDetected(detected);
}

objectLost#

Đăng ký một hàm gọi lại khi một đối tượng bị mất.

Available Functions
void objectLost(void (* callback)(void));

Parameters

Tham số

Kiểu

Sự miêu tả

callback

void (*)(void)

Một hàm được định nghĩa trước đó sẽ thực thi khi Cảm biến quang học mất một đối tượng được phát hiện.

Return Values

Hàm này không trả về giá trị nào.

Examples

Xác định hàm gọi lại (bên ngoài int main())

// Called when the Optical Sensor loses an object
void lost() {
  // The Brain will print that the Optical Sensor lost an
  // object to the Brain's screen.
  Brain.Screen.print("object lost");
}

Đăng ký hàm gọi lại bên trong int main()

/* vexcodeInit() is only required when using VEXcode.
Remove vexcodeInit() if compiling in VS Code. */
int main() {

  // Run lost when the Optical Sensor loses an object.
  Optical.objectLost(lost);
}