Video: 10 Awesome Personal Aircraft | Gyrocopter (Top Picks) 2025
Một thiết bị iOS có ba cổng giao tiếp với cảm biến - gia tốc kế, con quay và từ kế. Giống như cảm biến định hướng, quá trình cho các cảm biến này bắt đầu bằng cách khởi động và khởi tạo một người nghe nghe các sự kiện cảm biến. Đây là đoạn mã từ phương thức ViewDidLoad của bộ điều khiển cảm biến:
- (void) viewDidLoad {… accelerationTextView. bật = KHÔNG; con quay hồi chuyểnTextView. bật = KHÔNG; từ kếTextView. bật = KHÔNG; … // Thiết lập trình quản lý chuyển động self-> motionManager = [[CMMotionManager alloc] init]; tự chuyển động. accelerometerUpdateInterval = 1; tự chuyển động. gyroUpdateInterval = 1; tự chuyển động. magnetometerUpdateInterval = 1; …}
Đối tượng cho phép bạn truy cập vào các sự kiện cảm biến là một thể hiện của lớp CMMotionManager. Bạn cần phải tạo một, và chỉ một, thể hiện của lớp này (nghĩa là bạn phải đối xử với nó như một Singleton, mặc dù nó không phải là). Sau đó, bạn thiết lập các thuộc tính như khoảng cập nhật cho mỗi cảm biến.
- (IBAction) startMonitoringSensors: (id) sender {[self-> motionManager startAccelerometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMAccelerometerData * gia tốcTốc độ, lỗi NSError *) {[tự xử lýTốc độ cập nhật: tốc độData. sự tăng tốc];}]; [self-> motionManager startGyroUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMGyroData * máy quay hồi chuyểnData, NSError * error) {[self handleGyroUpdates: con quay hồi chuyểnData. rotationRate];}]; [self-> motionManager startMagnetometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMMagnetometerData * magneticometerData, NSError * error) {[tự kiểm soátMagnetometerUpdates: magnetometerData. magneticField];}];}Mỗi phương thức này được gọi với một khối xử lý nội tuyến sử dụng xây dựng withHandler. Các khối xử lý nội tuyến này gọi hàm handleAccelerationUpdates, handleGyroUpdates và handleMagnetometerUpdates. Các phương pháp này như sau:- (void) handleAccelerationUpdates: (CMAcceleration) accelerationData {NSLog (@ "Tăng tốc x>% f% f% f 1. 0) || (gia tốcData x 1. 0) || (gia tốcData.(1) () () () () () () () () () () () () () f% f% f 3000. 0) {savedX = magneticField. x; savedY = magneticField. y; savedZ = magneticField. z; [magneticometerTextView setText: @ "Tôi cảm thấy thực sự!"];} else {[magnetometerTextView setText: @ "ALL CLEAR!"];}}
Các phương pháp này đăng nhập dữ liệu thô. Các giá trị cảm biến thô được hiển thị bằng cách sử dụng NSLog được hiển thị bên dưới.
Các cảm biến sử dụng kỹ thuật heuristics để cung cấp những hiểu biết có ý nghĩa:
Gia tốc gia tốc tăng tốc lực g, ở đó 1 g lực tương đương với lực hấp dẫn của trái đất.
-
Nếu cảm biến gia tốc cảm nhận động tác lớn hơn lực hấp dẫn của trái đất ở bất kỳ hướng nào thì nó sẽ hào hứng hiển thị thông điệp, tôi sẽ nhanh! Nếu không, nó sẽ hiển thị TOO SLOW.
Ngăn quay quay đo vòng quay ba trục theo radian mỗi giây (1 radian mỗi giây có nghĩa là khoảng 1/6 vòng quay mỗi giây). Vì vậy, nếu cảm giác quay vòng bất kỳ nhất, nó in WHEE!
-
Trong mã từ kế, bạn sẽ sử dụng
-
khoảng cách heuristic để cảm nhận sự thay đổi lớn trong từ trường. Nếu thay đổi như vậy xảy ra, ứng dụng cho thấy tôi SENSE SOMETHING!
Nếu không có gì thay đổi cho một khoảng thời gian, nó sẽ trở lại để nghĩ rằng bờ biển là rõ ràng.
