Cảm biến gia tốc accelerometer

      161
02 mon 08, năm nay – 2727 lượt xemMột giữa những thứ mà lại tôi cảm thấy tuyệt vời nhất so với một dế yêu là nó bao gồm năng lực cảm ứng hoạt cồn và hướng. Với đông đảo thiết bị của táo apple bạn hoàn toàn hoàn toàn có thể sử dụng cảm ứng tần suất ( Accelerometers ) và cảm ứng con cù hồi gửi ( Gyroscopes ) theo 3 trục x, y, z. Trong nội dung bài viết này vớ cả chúng ta sẽ cùng nhau tạo ra một ứng dụng nhỏ dại để mày mò qua về bọn chúng .

Bạn đang xem: Cảm biến gia tốc accelerometer


I)Tạo giao diện

– giao diện của tất cả bọn họ sẽ làm cho một cách đối kháng thuần nhất để hoàn toàn rất có thể hiển thị 12 vía trị. Chúng ta sẽ theo dõi giá tốt trị tối đa giá trị lúc này của Acceleration cùng góc luân chuyển theo chiều trục X, Y, Z .

-Sau khi chế tác project mới chúng ta vào storyboards.


– Ở storyboards những bạn kéo 25 labels vào view. Chúng ta sẽ mang ra 12 labels nhằm hiển thị tư liệu về mỗi trục X, Y, Z. Chúng ta bạn biến hóa tên phần lớn labels và thêm 1 cái nút theo hình sau đây .

*

Tiếp theo tất cả bọn họ sẽ liên kết những đối tượng người tiêu dùng người dùng không tính view vào trong tệp tin viewcontroller. Những bặt đặt tên khớp ứng với phần đông đôi tượng bên cạnh view và action của nút những các bạn đặt thương hiệu resetMaxValue .

import CoreMotionclass ViewController: UIViewController
IBAction func resetMaxValues(sender: AnyObject)

II) cảm biến gia tốc(Accelerometer) và cảm biến con cù hồi chuyển(Gyroscope)

Cảm biến hóa gia tốc(Accelerometer)

Cảm biến gia tốc nó được sử dụng để đo tốc độ theo 3 chiều tức là ví dụ các bạn lắc sản phẩm mạnh thì giá trị các trục của nó cao và fan lại.

Xem thêm: Naruto Có Yêu Hinata Không, Tập Nào Naruto Và Hinata Kết Hôn

– Khi thiết bị của bạn bỏ lên trên bàn với phương diện hình hướng lên trên thì thứ đo tần suất sẽ sở hữu giá trị là – 1G theo hướng Z, với nếu mặt điện thoại thông minh úp xuống thì nó có giá trị 1G theo hướng Z .- nếu như bạn giữ trực tiếp đứng loại điện thoại chạm màn hình thì giá trị sẽ là – 1G theo trục Y cùng xoay ngược lại thì đã là 1G. Tương tự khi chúng ta để screen hiển thị năng lượng điện thoại cảm ứng trước mặt mà lại xoay 1 góc 90 độ trở về bên cạnh trái thì các bạn sẽ nhận được giá trị – 1G theo trục X và trái lại nếu quay mặt phải bạn sẽ nhận quý hiếm là 1G .

*

Cảm biến con quay hồi chuyển(Gyroscope)

– con quay hồi chuyển chạm màn hình được góc quay trong những trục XYZ. Với accelerometer là 2 chính sách cơ bản để cảm ứng hành vi .

III)Viết mã để test

Trong bài hướng dẫn này họ sẽ áp dụng CoreMotion. Để thêm core Motion vào vận dụng ở target của áp dụng ở Linked Frameworks and Libraries chúng ta thêm vi xử lý core Motion.


Bây giờ đồng hồ những chúng ta import core Motion vào file ViewController. Tiép theo vớ cả họ sẽ thêm một trong những ít biến cục bộ có loại double để lưu quý hiếm max của cảm ứng tần suất và sau đó tất cả bọn họ tạo thêm một trực thuộc tính có kiểu CMMotionManager .Dưới đấy là đoạn mã của file ViewController :

//Instance Variables var currentMaxAccelX: Double = 0.0 var currentMaxAccelY: Double = 0.0 var currentMaxAccelZ: Double = 0.0 var currentMaxRotX: Double = 0.0 var currentMaxRotY: Double = 0.0 var currentMaxRotZ: Double = 0.0 var movementManager = CMMotionManager() //Outlets
IBAction func resetMaxValues(sender: AnyObject) Tiếp theo vớ cả bọn họ sẽ khởi sản xuất giá trị mang lại những biến đổi :

override func viewDidLoad() currentMaxAccelX = 0 currentMaxAccelY = 0 currentMaxAccelZ = 0 currentMaxRotX = 0 currentMaxRotY = 0 currentMaxRotZ = 0 movementManager.gyroUpdateInterval = 0.2 movementManager.accelerometerUpdateInterval = 0.2 //Start Recording Data movementManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!) (accelerometerData: CMAccelerometerData?, NSError) -> Void in self.outputAccData(accelerometerData!.acceleration) if(NSError != nil) print("(NSError)") movementManager.startGyroUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: (gyroData: CMGyroData?, NSError) -> Void in self.outputRotData(gyroData!.rotationRate) if (NSError != nil) print("(NSError)") ) Trong đoạn mã này, vớ cả bọn họ đâu tiên set giá trị 0 mang đến kiểu double. Sau đó tất cả bọn họ khởi tạo đổi mới motionManager, tiếp theo sau tất cả bọn họ update khoảng tầm chừng thời hạn update theo mini giây .Tiếp theo vớ cả chúng ta gọi phương thức startAccelerometerUpdatesToQueue từ biến đổi motionManager, phương pháp trên sẽ nói cho thuộc tính motionManger tiên phong gửi những chạm màn hình tần suất ….Tiếp theo tất cả họ sẽ call những cách thức outputAccelertionData nhằm update tài liệu lên giao diện .Dưới đây là code của 2 cách thức :

func outputAccData(acceleration: CMAcceleration) accX?.text = "(acceleration.x).2fg" if fabs(acceleration.x) > fabs(currentMaxAccelX) currentMaxAccelX = acceleration.x accY?.text = "(acceleration.y).2fg" if fabs(acceleration.y) > fabs(currentMaxAccelY) currentMaxAccelY = acceleration.y accZ?.text = "(acceleration.z).2fg" if fabs(acceleration.z) > fabs(currentMaxAccelZ) currentMaxAccelZ = acceleration.z maxAccX?.text = "(currentMaxAccelX).2f" maxAccY?.text = "(currentMaxAccelY).2f" maxAccZ?.text = "(currentMaxAccelZ).2f" func outputRotData(rotation: CMRotationRate) rotX?.text = "(rotation.x).2fr/s" if fabs(rotation.x) > fabs(currentMaxRotX) currentMaxRotX = rotation.x rotY?.text = "(rotation.y).2fr/s" if fabs(rotation.y) > fabs(currentMaxRotY) currentMaxRotY = rotation.y rotZ?.text = "(rotation.z).2fr/s" if fabs(rotation.z) > fabs(currentMaxRotZ) currentMaxRotZ = rotation.z maxRotX?.text = "(currentMaxRotX).2f" maxRotY?.text = "(currentMaxRotY).2f" maxRotZ?.text = "(currentMaxRotZ).2f" Và sau cuối tất cả họ sẽ đề xuất là viết mã mang đến nút resetMaxValues :


IBAction func resetMaxValues(sender: AnyObject) currentMaxAccelX = 0 currentMaxAccelY = 0 currentMaxAccelZ = 0 currentMaxRotX = 0 currentMaxRotY = 0 currentMaxRotZ = 0 Nếu chúng ta chạy chúng ta có thể thấy màn trong khi dưới đây, nhưng chăm chú các bạn sẽ phải chạy ở máy thật.


*

Nguồn bài xích viếtTham gia ngay lập tức khoá học tập lập trình iOS, bề ngoài học tập rất biến hóa năng động cho bạn lựa lựa chọn và sẽ có mức học phí không giống nhau tuỳ theo bạn chọn học Online, Offline hoặc FlipLearning ( kết hợp giữa Online cùng Offline ). Bên cạnh đó bạn trả toàn rất có thể tham gia thực tập toàn thời hạn tại Techmaster để tinh giảm thời hạn học và tăng thời cơ bài toán làm .