비디오: iphone app Development Foundation tutorials(아이폰 앱 개발 기초 강의) - 제17강 Gyro Sencer(자이로센서) 2024
iOS 장치에는 가속도계, 자이로 스코프 및 센서에 대한 잘 설명 된 인터페이스가있는 세 개의 센서가 있습니다. 자력계. 오리엔테이션 센서와 마찬가지로이 센서의 프로세스는 센서 이벤트를 수신하는 리스너를 시작하고 초기화하여 시작됩니다. 센서보기 컨트롤러의 ViewDidLoad 메서드 코드는 다음과 같습니다.
- (void) viewDidLoad {… accelerationTextView. enabled = 아니오; 자이로 스코프 텍스트 뷰. enabled = 아니오; magnetometerTextView. enabled = 아니오; … // 모션 관리자 설정 self-> motionManager = [[CMMotionManager alloc] init]; self-> motionManager. accelerometerUpdateInterval = 1; self-> motionManager. gyroUpdateInterval = 1; self-> motionManager. magnetometerUpdateInterval = 1; …}
센서 이벤트에 대한 액세스를 제공하는 객체는 CMMotionManager 클래스의 인스턴스입니다. 이 클래스의 하나의 인스턴스 만 만들어야합니다 (즉, 그렇지 않은 경우에도 Singleton처럼 처리해야합니다). 그런 다음 각 센서의 업데이트 간격과 같은 속성을 설정합니다.
- (IBAction) startMonitoringSensors: (ID) 보낸 사람 {[self-> motionManager startAccelerometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMAccelerometerData, NSError * 오류) {[self handleAccelerationUpdates: accelerometerData. 가속];}]; [self-> motionManager startGyroUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMGyroData * 자이로 스코프 데이터, NSError * 오류) {[self handleGyroUpdates: gyroscopeData. rotationRate];}]; [self-> motionManager startMagnetometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMMagnetometerData * N magnet error, NSError * error) {[자동 핸들 자석 계측기 업데이트: magnetometerData. magneticField];}];}이러한 각각의 메소드는 withHandler 구조체를 사용하여 인라인 핸들러 블록과 함께 호출됩니다. 이러한 인라인 처리기 블록은 handleAccelerationUpdates, handleGyroUpdates 및 handleMagnetometerUpdates를 호출합니다. 이러한 방법은 다음과 같습니다.
% f % f % f 1.0} || (accelerationData. x 1.0) || (accelerationData.(gyroRotationRate. x 0.5) || (gyroRotationRate. y 0.5) || (자이로 감속도.z % f % f % f % f 3000. 0) {savedX = 자기장. 엑스; savedY = 자기장. 와이; savedZ = 자기장. 지; [magnetometerTextView setText: @ "ALL CLEAR!"];}}
이 메소드는 원시 데이터를 기록합니다. NSLog를 사용하여 표시되는 원시 센서 판독 값이 아래에 표시됩니다.앞의 센서 방법은 원시 센서 값을 해석하여 아래에 표시된 뷰를 생성합니다.
센서는 경험적 방법을 사용하여 의미있는 통찰력을 제공합니다.가속도계는 g 힘의 가속도를 측정합니다. 여기서 1 g-force는 지구 중력의 당김과 같습니다.
가속도계가 어떤 방향 으로든 지구의 중력 가속도보다 더 큰 움직임을 감지하면, 그것은 흥분하여 메시지를 표시합니다, 나는 빨리 가고 있습니다! 그렇지 않으면 TOO SLOW가 표시됩니다. 자이로 스코프는 장치의 3 축의 회전을 초당 라디안 단위로 측정합니다 (1 초당 1 라디안은 1 초마다 약 6 분의 1 회전을 의미 함). 따라서 대부분의 회전을 감지하면 WHEE가 인쇄됩니다.
-
자력계 코드에서는 자기장의 큰 변화를 감지하기 위해
거리
-
휴리스틱을 사용합니다.
-
이러한 변경이 발생하면 앱에 내가 틀림없이 나타납니다! 한 간격 동안 아무 것도 바뀌지 않으면 해안이 맑은 것으로 돌아갑니다.