Phn cng

Phn cng

Hệ thống phần cứng mà FTCLib hỗ trợ như động cơ, cảm biến và thiết bị điều khiển.

Hệ thống phần cứng mà FTCLib hỗ trợ như động cơ, cảm biến và thiết bị điều khiển.

Level

Intermediate

Source

Source

Author

Author

FTC Lib

FTC Lib

Translator

Translator

FTC26749 aDudu

FTC26749 aDudu

Date Published

Date Published

Jan 18, 2026

Jan 18, 2026

package com.arcrobotics.ftclib.hardware
package com.arcrobotics.ftclib.hardware

Mỗi thiết bị phần cứng trong FTCLib đều được xây dựng dựa trên interface HardwareDevice. Interface này cung cấp hai phương thức được mọi thiết bị kế thừa:

  • disable(): vô hiệu hóa thiết bị

  • getDeviceType(): trả về một chuỗi String mô tả đặc trưng của thiết bị

FTCLib cung cấp rất nhiều thiết bị phần cứng có thể được triển khai hoặc tùy biến trong chương trình của bạn. Lời khuyên tốt nhất dành cho người dùng là hãy xem qua package hardware trong repository của FTCLib. Dưới đây là danh sách các thiết bị hiện đang có sẵn (không bao gồm motor):

Mở rộng Gyro (Gyro Extensions)

Lớp GyroEx là một gyro mở rộng, cho phép người dùng thêm nhiều phương thức cấu hình hơn và khả năng điều khiển linh hoạt hơn cho gyro. Một ví dụ là việc tạo lớp ModernRoboticsGyro. Lớp trừu tượng này có các phương thức sau:

  • init(): khởi tạo gyro và đặt hướng hiện tại làm heading 0

  • getHeading(): trả về heading của robot so với lần reset gần nhất

  • getAbsoluteHeading(): trả về heading tuyệt đối so với hướng ban đầu

  • getAngles(): trả về định hướng x, y, z của gyro; về mặt chức năng tương đương với yaw, pitch và roll

  • getRotation2d(): chuyển heading thành một đối tượng Rotation2d

  • reset(): áp dụng một offset để getHeading() trả về vị trí 0

Một triển khai hữu ích của lớp này là RevIMU, dùng cho IMU tích hợp sẵn trên REV hub.

Cảm biến (Sensors)

Có một số cảm biến được cung cấp trong FTCLib:

  • SensorColor

  • SensorDistance & SensorDistanceEx

  • SensorRevTOFDistance

Lớp SensorColor chỉ đơn thuần là một phần mở rộng của lớp ColorSensor có sẵn trong SDK.

SensorDistanceSensorDistanceEx là các interface dùng để tạo cảm biến khoảng cách tùy chỉnh nếu cần.
Một triển khai của interface SensorDistanceExSensorRevTOFDistance, sử dụng cơ chế time-of-flight để theo dõi khoảng cách.

Servo

Interface ServoEx cho phép nhiều phương thức và hành động hơn so với lớp servo thông thường trong SDK.
Bạn có thể thay đổi vị trí của servo tương đối so với vị trí trước đó hoặc đặt nó ở một vị trí tuyệt đối. Bạn có thể chỉ định một vị trí nằm trong phạm vi chuyển động của servo hoặc yêu cầu nó quay một số đơn vị góc xác định.

Một ví dụ triển khai có thể được tìm thấy trong lớp SimpleServo. Bạn có thể tạo một servo đơn giản như sau:

ServoEx servo = new SimpleServo(
    hardwareMap, "servo_name", MIN_ANGLE, MAX_ANGLE
);
// đoạn trên về mặt chức năng tương đương với
servo = new SimpleServo(
    hardwareMap, "servo_name", MIN_ANGLE, MAX_ANGLE,
    AngleUnit.DEGREES
);
// nếu bạn muốn đặt phạm vi bằng radian trong constructor
// bạn có thể sử dụng đoạn sau
servo = new SimpleServo(
    hardwareMap, "servo_name", MIN_ANGLE, MAX_ANGLE,
    AngleUnit.RADIANS
);
ServoEx servo = new SimpleServo(
    hardwareMap, "servo_name", MIN_ANGLE, MAX_ANGLE
);
// đoạn trên về mặt chức năng tương đương với
servo = new SimpleServo(
    hardwareMap, "servo_name", MIN_ANGLE, MAX_ANGLE,
    AngleUnit.DEGREES
);
// nếu bạn muốn đặt phạm vi bằng radian trong constructor
// bạn có thể sử dụng đoạn sau
servo = new SimpleServo(
    hardwareMap, "servo_name", MIN_ANGLE, MAX_ANGLE,
    AngleUnit.RADIANS
);

MIN_ANGLEMAX_ANGLE là các vị trí góc nhỏ nhất và lớn nhất (tính bằng độ) mà bạn muốn thiết lập cho servo. Về mặt chức năng, điều này đóng vai trò là phạm vi hoạt động hiệu dụng của servo.
Nếu bạn muốn thay đổi phạm vi hiệu dụng tại bất kỳ thời điểm nào, bạn có thể thực hiện như sau:

// thay đổi phạm vi hiệu dụng với min và max theo ĐỘ
servo.setRange(MIN_ANGLE, MAX_ANGLE);
// thay đổi phạm vi với min và max theo RADIAN
servo.setRange(MIN_ANGLE, MAX_ANGLE, AngleUnit.RADIANS);
// trả về phạm vi hiệu dụng
double degreeRange = servo.getAngleRange();
// trả về phạm vi hiệu dụng theo RADIAN
degreeRange = servo.getAngleRange(AngleUnit.RADIANS);
// thay đổi phạm vi hiệu dụng với min và max theo ĐỘ
servo.setRange(MIN_ANGLE, MAX_ANGLE);
// thay đổi phạm vi với min và max theo RADIAN
servo.setRange(MIN_ANGLE, MAX_ANGLE, AngleUnit.RADIANS);
// trả về phạm vi hiệu dụng
double degreeRange = servo.getAngleRange();
// trả về phạm vi hiệu dụng theo RADIAN
degreeRange = servo.getAngleRange(AngleUnit.RADIANS);

Bạn cũng có thể đảo chiều hoạt động của servo:

// đảo chiều servo
servo.setInverted(true);
// kiểm tra servo có bị đảo chiều hay không
// (true nếu bị đảo, false nếu không)
boolean isInverted = servo.getInverted();
// đảo chiều servo
servo.setInverted(true);
// kiểm tra servo có bị đảo chiều hay không
// (true nếu bị đảo, false nếu không)
boolean isInverted = servo.getInverted();

Để xoay đến các vị trí và góc, sử dụng các phương thức sau:

  • rotateByAngle: xoay servo một số đơn vị góc tương đối so với góc hiện tại

  • turnToAngle: đặt góc tuyệt đối cho servo

  • rotateBy: xoay servo một khoảng vị trí tương đối so với vị trí hiện tại

setPosition: đặt vị trí tuyệt đối của servo (từ 0 đến 1)

ADUDU

A proud team of passionate Robotics Enthusiasts competing in nation-wide Technology competitions in Vietnam, the FIRST Tech Challenge and the FIRST Robotics Competition.

Copyright ©

, all rights reserved

Made by aDudu's Programming Department

made by aDudu

made by aDudu

Phần cứng