Accelerometer là gì

  -  

Một trongmọi sản phẩm công nghệ nhưng tôi cảm thấy hoàn hảo và tuyệt vời nhất duy nhất đối với một cái điện thoại thông minh là nó có tác dụng chạm màn hình hoạt động cùng hướng. Với các trang bị của Apple chúng ta có thể áp dụng cảm biến gia tốc(Accelerometers) và cảm ứng con xoay hồi chuyển(Gyroscopes) theo 3 trục x, y, z. Trong nội dung bài viết này họ đã bên nhau tạo thành một ứng dụng bé dại để tò mò qua về chúng.

Bạn đang xem: Accelerometer là gì

I)Tạo giao diện

-Giao diện của chúng ta sẽ làm cho một biện pháp dễ dàng duy nhất để có thể hiển thị 12 vía trị. Chúng ta sẽ quan sát và theo dõi giá tốt trị cao nhất quý hiếm bây chừ của Acceleration và góc xoay theo chiều trục X, Y, Z.

-Sau lúc tạo nên project bắt đầu chúng ta vào storyboards.

-Ở storyboards chúng ta kéo 25 labels vào view. Chúng ta đã lôi ra 12 labels để hiển thị tài liệu về từng trục X, Y, Z. Các các bạn chúng ta chuyển đổi thương hiệu những labels cùng thêm 1mẫu nút ít theo như hình dưới đây.

*

Tiếp theo bọn họ đã liên kết các đối tượng bên cạnh view vào vào tệp tin viewcontroller. Các bặt viết tên tương xứng với những đôi tượng ko kể viewcùng action của nút chúng ta đánh tên resetMaxValue.

import CoreMotionclass ViewController: UIViewController
IBOutlet weak var rollLabel: UILabel!
IBOutlet weak var pinchLabel: UILabel!
IBOutlet weak var yawLabel: UILabel!
IBOutlet var accX: UILabel!
IBOutlet var accY: UILabel!
IBOutlet var accZ: UILabel!
IBOutlet var maxAccX: UILabel!
IBOutlet var maxAccY: UILabel!
IBOutlet var maxAccZ: UILabel!
IBOutlet var rotX: UILabel!
IBOutlet var rotY: UILabel!
IBOutlet var rotZ: UILabel!
IBOutlet var maxRotX: UILabel!
IBOutlet var maxRotY: UILabel!
IBOutlet var maxRotZ: UILabel!
IBkích hoạt func resetMaxValues(sender: AnyObject)

II) Cảm vươn lên là gia tốc(Accelerometer) với Cảm biến đổi con tảo hồi chuyển(Gyroscope)

Cảm đổi mới gia tốc(Accelerometer)

-Cảm đổi thay vận tốc nó được áp dụng để đo gia tốc theo 3 chiều Có nghĩa là ví dụ bạn lắc máy mạnhthì cực hiếm những trục của nó cao cùng fan lại.

-Lúc lắp thêm của công ty bỏ lên trên bàn với phương diện hình hướng lên trên mặt thì sản phẩm công nghệ đo tốc độ sẽ sở hữu cực hiếm là -1G theo hướng Z, cùng trường hợp phương diện điện thoại cảm ứng thông minh úp xuống thì nó có mức giá trị 1G theo chiều Z.

-Nếu bạn giữ trực tiếp đứng chiếc điện thoại thì quý giá vẫn là -1G theo trục Y và luân chuyển trở lại thì đã là 1G. Tương từ khi bạn để screen điện thoại trước khía cạnh mà lại xoay 1 góc 90 độ về bên cạnh trái thì bạn sẽ thừa nhận được giá trị -1G theo trục X với ngược trở lại ví như xoay bên cần các bạn sẽ dìm quý giá là 1G.

Xem thêm: Sá»± Khã¡C BiệT GiữA Endocytosis Vã Exocytosis Là Gì, Exocytosis Là Gì

*

Cảm biến đổi bé quay hồi chuyển(Gyroscope)

-Con tảo hồi chuyển cảm ứng được góc xoay thân những trục XYZ. Cùng cùng với accelerometer là 2 dụng cụ cơ bản để cảm ứng hành vi.

III)Viết mã để test

Trong bài giải đáp này chúng ta đang sử dụng CoreMotion. Để thêm Vi xử lý Core Motion vào vận dụng sinh hoạt target của áp dụng ở Linked Frameworks and Libraries chúng ta thêm bộ vi xử lý Core Motion.

Bây giờ đồng hồ chúng ta import Vi xử lý Core Motion vào tệp tin ViewController. Tixay theo họ vẫn thêm một số trở thành toàn thể bao gồm kiểu dáng double nhằm lưu lại giá trị max của cảm ứng gia tốc cùng tiếp đến họ tạo ra thêm một nằm trong tính gồm phong cách CMMotionManager.

Dưới đó là đoạn mã của tệp tin 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
IBOutlet var accX: UILabel!
IBOutlet var accY: UILabel!
IBOutlet var accZ: UILabel!
IBOutlet var maxAccX: UILabel!
IBOutlet var maxAccY: UILabel!
IBOutlet var maxAccZ: UILabel!
IBOutlet var rotX: UILabel!
IBOutlet var rotY: UILabel!
IBOutlet var rotZ: UILabel!
IBOutlet var maxRotX: UILabel!
IBOutlet var maxRotY: UILabel!
IBOutlet var maxRotZ: UILabel!
IBAction func resetMaxValues(sender: AnyObject) Tiếp theo bọn họ sẽ khởi tạo quý giá cho các biến:

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, bọn họ đâu tiên phối quý giá 0 mang lại hình trạng double. Sau đó chúng ta khởi sản xuất phát triển thành motionManager, tiếp theo sau chúng ta cập nhật khoảng tầm thời gian cập nhật theo mini giây.

Tiếp theo họ Gọi thủ tục startAccelerometerUpdatesToQueue từ bỏ trở thành motionManager, cách làm trên đang nói đến ở trong tính motionManger ban đầu gửi những cảm biến gia tốc....

Tiếp theo bọn họ đã Gọi những thủ tục outputAccelertionData để update dữ liệu lên đồ họa.

Dưới đấy là code của 2 phương thơm 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à cuối cùng bọn họ sẽ phải là viết mã đến nút resetMaxValues:


IBAction func resetMaxValues(sender: AnyObject) currentMaxAccelX = 0 currentMaxAccelY = 0 currentMaxAccelZ = 0 currentMaxRotX = 0 currentMaxRotY = 0 currentMaxRotZ = 0 Nếu các bạn chạy chúng ta có thể thấy màn hình nlỗi dưới đây, nhưng mà chú ý những các bạn sẽ phải chạy nghỉ ngơi thiết bị thiệt.

Xem thêm: # Top 25 Game Offline Hay Nhất Cho Pc (Mới 2021), Top 25 Game Offline Hay Nhất Cho Pc

*

Nguồn bài xích viết

Kchất hóa học lập trình sẵn cầm tay tại viviancosmetics.vn:

Đểthiết lập MacOSX lên Hartware chưa phải Apple tương tác chuyên gia tải Hackintosh:

Nguyễn Minch Sơn: 01287065634Huỳnh Minc Sơn: 0936225565
Ttê mê gia ngaykhoá học lập trình sẵn iOS, hình thức tiếp thu kiến thức rất linh thiêng hoạt cho chính mình sàng lọc và sẽ sở hữu mức học phí không giống nhau tuỳ theo các bạn lựa chọn học tập Online, Offline hoặc FlipLearning(Kết hòa hợp thân Online và Offline). Dường như bạn cũng có thể tmê say giathực tập toàn thời gian trên viviancosmetics.vnnhằm rút ngắn thời gian học và tăng cơ hội việc làm cho.