當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 工業(yè)傳感器 > 加速度傳感器
發(fā)布日期:2022-10-09 點(diǎn)擊率:136
加速度傳感器 ios:iOS加速度傳感器(accelerometer) | 菜鳥教程 第1張" title="加速度傳感器 ios:iOS加速度傳感器(accelerometer) | 菜鳥教程 第1張-傳感器知識網(wǎng)"/>
IOS加速度傳感器(accelerometer)
簡介
加速度傳感器是根據(jù)x、y和z三個(gè)方向來檢測在設(shè)備位置的改變。
通過加速度傳感器可以知道當(dāng)前設(shè)備相對于地面的位置。
以下實(shí)例代碼需要在真實(shí)設(shè)備上運(yùn)行,在模擬器上是無法工作的。
實(shí)例步驟
1、創(chuàng)建一個(gè)簡單的視圖應(yīng)用程序
2、在ViewController.xib中添加三個(gè)標(biāo)簽,并創(chuàng)建一個(gè)ibOutlets分別為:xlable、ylabel和zlabel
3、如下所示,更新ViewController.h
#import
IOS加速度傳感器(accelerometer) 簡介
加速度傳感器是根據(jù)x、y和z三個(gè)方向來檢測在設(shè)備位置的改變。
通過加速度傳感器可以知道當(dāng)前設(shè)備相對于地面的位置。
以下實(shí)例代碼需要在真實(shí)設(shè)備上運(yùn)行,在模擬器上是無法工作的。
例步驟
1、創(chuàng)建一個(gè)簡單的視圖應(yīng)用程序
2、在ViewController.xib中添加三個(gè)標(biāo)簽,并創(chuàng)建一個(gè)ibOutlets分別為:xlable、ylabel和zlabel
3、如下所示,更新ViewController.h
#import
4、如下所示,更新ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[[UIAccelerometer sharedAccelerometer]setDelegate:self];
//Do any additional setup after loading the view,typically from a nib
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:
(UIAcceleration *)acceleration{
[xlabel setText:[NSString stringWithFormat:@"%f",acceleration.x]];
[ylabel setText:[NSString stringWithFormat:@"%f",acceleration.y]];
[zlabel setText:[NSString stringWithFormat:@"%f",acceleration.z]];
}
@end
輸出
當(dāng)我們在iPhone設(shè)備中運(yùn)行該應(yīng)用程序,得到的輸出結(jié)果如下所示。

iOS加速度傳感器
加速度傳感器是根據(jù)x,y和z三個(gè)方向來檢測設(shè)備位置的變化
iOS設(shè)備正面朝上放置,加速度傳感器的默認(rèn)原點(diǎn)為手機(jī)的物理重心位置,y軸朝手機(jī)頂部,x朝右,z朝屏幕正上方(正方向)
import CoreMotion
初始化UIAccelerometer單例
3.設(shè)置UIAccelerometer的accelerometerUpdateInterval屬性,就是檢查設(shè)備更新的時(shí)間間隔
如果你設(shè)備保持靜止然后豎直放置的話,加速度的值就是(0,-1,0),將其平放在桌面上就會是(0,0,-1)
前言:之前參加了一個(gè)比賽,里面主要涉及到VR圖片拍攝和圖片3D呈現(xiàn),本次主要說說圖片拍攝中使用到的陀螺儀和加速度計(jì)。
1、什么是CoreMotion
CoreMotion是一個(gè)專門處理Motion的框架,其中包含了兩個(gè)部分加速度計(jì)和陀螺儀,在iOS4之前加速度計(jì)是由UIAccelerometer類來負(fù)責(zé)采集數(shù)據(jù),現(xiàn)在一般都是用CoreMotion來處理加速度過程,不過由于UIAccelerometer比較簡單,同樣有人在使用。加速計(jì)由三個(gè)坐標(biāo)軸決定,用戶最常見的操作設(shè)備的動(dòng)作移動(dòng),晃動(dòng)手機(jī)(搖一搖),傾斜手機(jī)都可以被設(shè)備檢測到,加速計(jì)可以檢測到線性的變化,陀螺儀可以更好的檢測到偏轉(zhuǎn)的動(dòng)作,可以根據(jù)用戶的動(dòng)作做出相應(yīng)的動(dòng)作,iOS模擬器無法模擬以上動(dòng)作,真機(jī)調(diào)試需要開發(fā)者賬號。
2、CoreMotion作用
CoreMotion主要負(fù)責(zé)三種數(shù)據(jù):加速度值,陀螺儀值,設(shè)備motion值。實(shí)際上,這個(gè)設(shè)備motion值就是通過加速度和旋轉(zhuǎn)速度進(jìn)行 fusing變換算出來的,基本原理后面會介紹。CoreMotion在系統(tǒng)中以單獨(dú)的后臺線程的方式去獲得原始數(shù)據(jù),并同時(shí)執(zhí)行一些motion算法來提取更多的信息,然后呈獻(xiàn)給應(yīng)用層做進(jìn)一步處理。CoreMotion框架包含有一個(gè)專門的Manager類,CMMotionManager,然后由這個(gè)manager去管理三種和運(yùn)動(dòng)相關(guān)的數(shù)據(jù)封裝類,而 且,這些類都是CMLogItem類的子類,所以相關(guān)的motion數(shù)據(jù)都可以和發(fā)生的時(shí)間信息一起保存到對應(yīng)文件中,有了時(shí)間戳,兩個(gè)相鄰數(shù)據(jù)之間的實(shí) 際更新時(shí)間就很容易得到了。這個(gè)東西是非常有用的,比如有些時(shí)候,你得到的是50Hz的采樣數(shù)據(jù),但希望知道的是每一秒加速度的平均值。
3、CoreMotion數(shù)據(jù)獲取
CoreMotion中獲取數(shù)據(jù)主要是兩種方式:
一種是Push,就是你提供一個(gè)線程管理器NSOperationQueue,再提供一個(gè)Block,這樣,CoreMotion自動(dòng)在每一個(gè)采樣數(shù)據(jù)到來的時(shí)候回調(diào)這個(gè)Block,進(jìn)行處理。在這中情況下,block中的操作會在你自己的主線程內(nèi)執(zhí)行。
一種是 Pull,在這個(gè)方式里,你必須主動(dòng)去像CMMotionManager要數(shù)據(jù),這個(gè)數(shù)據(jù)就是最近一次的采樣數(shù)據(jù)。你不去要,CMMotionManager就不會給你。當(dāng)然,在這種情況下,CoreMotion所有的操作都在自己的后臺線程中進(jìn)行,不會有任何干擾你當(dāng)前線程的行為。
4、加速計(jì)
Pull獲取方式
Push獲取方式
5、陀螺儀
Pull獲取方式
Push獲取方式
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原