Cảm biến màu#

Giới thiệu#

Lớp colorsensor được sử dụng để truy cập dữ liệu từ Cảm biến màu. 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#

colorsensor Color1 = colorsensor(index);

Lớp Destructor#

Hủy đối tượng colorsensor và giải phóng các tài nguyên liên quan.

virtual ~colorsensor();

Thông số#

Tham số

Kiểu

Sự miêu tả

index

int32_t

Cổng thông minh mà cảm biến màu đượ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 colorsensor instance in Port 1
colorsensor Color1 = colorsensor(PORT1);

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

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

  • setLight – Bật, tắt hoặc đặt độ sáng cho đèn LED của Cảm biến màu.

  • isNearObject – Trả về liệu một đối tượng có gần Cảm biến màu hay không.

  • detects – Trả về liệu màu được chỉ định có được Cảm biến màu phát hiện hay không.

  • colorname – Trả về tên của màu được phát hiện bởi Cảm biến màu.

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

  • hue – Trả về giá trị sắc độ được phát hiện.

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

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

// Create an colorsensor instance in Port 1
colorsensor Color1 = colorsensor(PORT1);

setLight#

Thiết lập công suất ánh sáng của đèn LED thuộc cảm biến màu. Ánh sáng này giúp cảm biến màu nhận diện vật thể và màu sắc rõ nét hơn.

Nếu đèn của cảm biến màu đ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 màu đang sáng, 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

1 — Bật hoặc tắt đèn LED bằng cách sử dụng ledState.

void setLight( 
  ledState  state );

2 — Bật đèn LED với cường độ sáng cụ thể.

void setLight( 
  int32_t      intensity, 
  percentUnits units = percent );

Parameters

Tham số

Kiểu

Sự miêu tả

state

ledState

Thiết lập trạng thái bật hoặc tắt đèn LED. ledState::on bật đèn LED với độ sáng 100%. ledState::off tắt đèn LED.

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.
Color1.setLight(50, percent);

isNearObject#

Trả về giá trị này nếu cảm biến màu 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 màu phát hiện vật thể.

  • false – Cảm biến màu không phát hiện vật thể.

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

detects#

Trả về true nếu cảm biến màu phát hiện ra màu sắc được chỉ định.

Available Functions

1 — Detects a colorType.

bool detects( 
  colorType  color );

2 — Detects a vex::color.

bool detects( 
  vex::color  color );

Parameters

Thông số

Kiểu

Sự miêu tả

color

colorType

Màu hợp lệ:

  • blue – Giá trị sắc độ từ 196° đến 229°
  • blue_green – Giá trị sắc độ từ 140° đến 195°
  • blue_violet – Giá trị sắc độ từ 230° đến 239°
  • green – Giá trị sắc độ từ 84° đến 139°
  • orange – Giá trị sắc độ từ 21° đến 30°
  • purple
  • red – Giá trị sắc độ từ 350° đến 14°
  • red_orange – Giá trị sắc độ từ 15° đến 20°
  • red_violet – Giá trị sắc độ từ 281° đến 350°
  • violet – Giá trị màu sắc từ 240° đến 280°
  • white
  • yellow – Giá trị màu sắc từ 54° đến 74°
  • yellow_green – Giá trị màu sắc từ 75° đến 83°
  • yellow_orange – Giá trị màu sắc từ 31° đến 53°

color

vex::color

A valid custom color, or one of the predefined colors listed above.

Return Values
  • true – Cảm biến màu phát hiện màu sắc.

  • false – Cảm biến màu không phát hiện màu sắc.

Examples
int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Drive until a red object is seen
  Drivetrain.drive(forward);
  while (true) {
    if (Color1.detects(red)) {
      Drivetrain.stop();
      break;
    }
    wait(0.5, seconds);
  }
}

colorname#

Trả về màu sắc phù hợp nhất được tìm thấy.

Available Functions
colorType colorname();

Parameters

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

Return Values

Khi in trực tiếp, nó sẽ hiển thị giá trị số tương ứng với màu đó:

Màu sắc

Giá trị số

none

0

red

1

green

2

blue

3

white

4

yellow

5

orange

6

purple

7

cyan

8

red_violet

9

violet

10

blue_violet

11

blue_green

12

yellow_green

13

yellow_orange

14

red_orange

15

black

16

transparent

17

Notes
  • Hàm convertColorToString được VEXcode tự động tạo ra khi cấu hình Cảm biến màu trong cửa sổ Thiết bị. Hàm này chỉ khả dụng trong các dự án VEXcode IQ và sẽ không hoạt động trong các môi trường khác.

  • Khi sử dụng colorname bên ngoài VEXcode, cần so sánh trực tiếp với giá trị colorType — bất kỳ màu nào bắt đầu bằng colorType:: (ví dụ: colorType::green hoặc colorType::red).

Examples
int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Continuously check the detected color
  while (true) {

    // Compare the color name with "red"
    if (convertColorToString(Color1.colorname()) == "red") {
      Brain.Screen.print("Red object!");
    } else {
      Brain.Screen.print("Not red");
    }

    wait(0.5, seconds);
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
  }
}

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Continuously check the detected color
  while (true) {

    // Compare the color name with the colorType
    if (Color1.colorname() == colorType::red) {
      Brain.Screen.print("Red object!");
    } else {
      Brain.Screen.print("Not red");
    }

    wait(0.5, seconds);
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
  }
}

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 màu. 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 màu 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 Color Sensor
double brightness = Color1.brightness();

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

hue#

Trả về màu sắc được cảm biến màu 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 màu phát hiện trong khoảng 0 — 359,00.

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