質問するログイン新規登録

質問編集履歴

3

文字の修正

2016/06/11 08:23

投稿

northpotato
northpotato

スコア38

title CHANGED
File without changes
body CHANGED
@@ -9,9 +9,9 @@
9
9
 
10
10
  ![イメージ説明](f3e21bf681597a161c7636272f7df4bd.png)
11
11
 
12
- 2016. 6. 11
13
- アドバイスを受け、下記のように修正し、希望の機能を実現できました。
14
12
 
13
+ 頂いたアドバイスを元に、下記のように修正し、希望の機能を実現できました。
14
+
15
15
  ```
16
16
  // ボタン押下時に Alert-1 を表示する
17
17
  - (IBAction)Button_comp:(UIButton *)sender {

2

アラート内での、傾斜計測・デバイスの補正

2016/06/11 08:23

投稿

northpotato
northpotato

スコア38

title CHANGED
File without changes
body CHANGED
@@ -7,4 +7,106 @@
7
7
  ![イメージ説明](cc3ca547e9bdaf6ed58d12f9e9ec33dc.png)
8
8
 
9
9
 
10
- ![イメージ説明](f3e21bf681597a161c7636272f7df4bd.png)
10
+ ![イメージ説明](f3e21bf681597a161c7636272f7df4bd.png)
11
+
12
+ 2016. 6. 11
13
+ アドバイスを受け、下記のように修正し、希望の機能を実現できました。
14
+
15
+ ```
16
+ // ボタン押下時に Alert-1 を表示する
17
+ - (IBAction)Button_comp:(UIButton *)sender {
18
+ // 補正変数の初期化
19
+ angle_comp_1 =0;
20
+ angle_comp_2 =0;
21
+ angle_comp =0;
22
+
23
+ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"補正(ステップ1/2)"
24
+ message:@"補正しますか?"
25
+ preferredStyle:UIAlertControllerStyleAlert];
26
+ // addActionした順に左から右にボタンが配置される
27
+ [alertController addAction:[UIAlertAction actionWithTitle:@"いいえ" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
28
+ // 「いいえ」ボタンが押された時の処理
29
+ [self cancelButtonPushed];
30
+ }]];
31
+
32
+ [alertController addAction:[UIAlertAction actionWithTitle:@"はい" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
33
+ // 「はい」ボタンが押された時の処理
34
+ [self otherButtonPushed];
35
+ }]];
36
+
37
+ // 画面に表示します
38
+ [self presentViewController:alertController animated:YES completion:nil];
39
+ }
40
+
41
+ // アラートの「はい」ボタン押下処理
42
+ - (void)otherButtonPushed {
43
+ // 定期的に実行するハンドラを設定
44
+ CMAccelerometerHandler handler = ^(CMAccelerometerData *angle_data, NSError *error){
45
+ [self animation:angle_data];
46
+ };
47
+
48
+ // 加速度センサーの利用を開始
49
+ [motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]withHandler:handler];
50
+ CMAccelerometerData *angle_data = motionManager.accelerometerData;
51
+ xac = angle_data.acceleration.x; // X 軸: 加速度G
52
+ yac = angle_data.acceleration.y; // Y 軸: 加速度G
53
+ angle_comp_1 = atan2(yac, xac) * - 180.0 / M_PI;
54
+
55
+ // 傾斜角を小数点以下1桁の実数表示
56
+ self.Incl_Label.text = [NSString stringWithFormat:@"%4.1f", angle];
57
+ self.black.transform = CGAffineTransformMakeRotation(M_PI * angle / 180);
58
+ [self alert_2];
59
+ }
60
+
61
+ // アラートの「いいえ」ボタン押下処理
62
+ - (void)cancelButtonPushed {
63
+ NSLog(@"いいえ!");
64
+ }
65
+
66
+ - (void)alert_2{
67
+ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"補正(ステップ2/2)"
68
+ message:@"180度、水平反転してください。"
69
+ preferredStyle:UIAlertControllerStyleAlert];
70
+
71
+ // addActionした順に左から右にボタンが配置される
72
+ [alertController addAction:[UIAlertAction actionWithTitle:@"キャンセル" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
73
+ // 「いいえ」ボタンが押された時の処理
74
+ [self cancelButtonPushed];
75
+ }]];
76
+ [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
77
+ // 「はい」ボタンが押された時の処理
78
+ [self otherButtonPushed_2];
79
+ }]];
80
+
81
+ // 画面に表示します
82
+ [self presentViewController:alertController animated:YES completion:nil];
83
+ }
84
+
85
+ // アラートの「はい」ボタン押下処理
86
+ - (void)otherButtonPushed_2 {
87
+ // 傾斜角を小数点以下1桁の実数表示
88
+ self.Incl_Label.text = [NSString stringWithFormat:@"%4.1f", angle];
89
+ self.black.transform = CGAffineTransformMakeRotation(M_PI * angle / 180);
90
+ CMAccelerometerData *angle_data = motionManager.accelerometerData;
91
+ xac = angle_data.acceleration.x; // X 軸: 加速度G
92
+ yac = angle_data.acceleration.y; // Y 軸: 加速度G
93
+ angle_comp_2 = atan2(yac, xac) * - 180.0 / M_PI;
94
+
95
+ angle_comp = (angle_comp_1 + angle_comp_2)/2 ;
96
+ self.comp_value.text = [NSString stringWithFormat:@"%4.1f", angle_comp];
97
+
98
+ // 角度計測を停止する
99
+ [motionManager stopAccelerometerUpdates];
100
+
101
+ //angle_ar[] の初期化
102
+ int i;
103
+ for (i=0; i <500; i++) {angle_ar[i] = 0; }
104
+
105
+ // angle_disp[] 初期化
106
+ for (i=0; i<10; i++) { angle_disp[i] = 0;}
107
+
108
+ // jcount の 初期化
109
+ jcount =0;
110
+ }
111
+
112
+ ```

1

angle_data の定義部分

2016/06/11 08:12

投稿

northpotato
northpotato

スコア38

title CHANGED
File without changes
body CHANGED
@@ -4,5 +4,7 @@
4
4
  どなたか、改善策、アドバイス、ご教示頂けたら幸いです。
5
5
  よろしくお願い致します。
6
6
 
7
+ ![イメージ説明](cc3ca547e9bdaf6ed58d12f9e9ec33dc.png)
7
8
 
9
+
8
10
  ![イメージ説明](f3e21bf681597a161c7636272f7df4bd.png)