

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.
SensorDistance và SensorDistanceEx 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 SensorDistanceEx là SensorRevTOFDistance, 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:
MIN_ANGLE và MAX_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:
Bạn cũng có thể đảo chiều hoạt động của servo:
Để 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)

