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

質問編集履歴

5

誤りの訂正

2015/11/12 11:30

投稿

kt.tk.co
kt.tk.co

スコア27

title CHANGED
File without changes
body CHANGED
@@ -112,15 +112,13 @@
112
112
 
113
113
 
114
114
 
115
- /////////////////////////
115
+ /////////////////////////////////////////////
116
- ///Androidに値を送るための宣言(省略)
116
+ ///Androidに値を送るための宣言(省略)////
117
- /////////////////////////
117
+ /////////////////////////////////////////////
118
118
 
119
119
 
120
120
 
121
121
 
122
-
123
-
124
122
  void setup()
125
123
  {
126
124
  // シリアルモニターの設定
@@ -153,10 +151,7 @@
153
151
 
154
152
 
155
153
 
156
- ////////////////////////////////
157
- //センサへデータを書き込む関数//(センサ設定の変更用)
154
+ //センサへデータを書き込む関数
158
- ////////////////////////////////
159
-
160
155
  void LPS331AP_write(int CS, byte reg, byte val)
161
156
  {
162
157
  digitalWrite(CS, LOW); //LOWにすることで通信開始
@@ -166,10 +161,8 @@
166
161
  }
167
162
 
168
163
 
169
- //////////////////////////////
170
- //センサから値を受信する関数// (CSで受信先のセンサを区別。regで取得するデータ(温度or気圧)を指定)
171
- //////////////////////////////
172
164
 
165
+ //センサから値を受信する関数/
173
166
  byte LPS331AP_read(int CS, byte reg)
174
167
  {
175
168
  byte ret = 0;
@@ -187,8 +180,8 @@
187
180
 
188
181
  void loop()
189
182
  {
183
+ /////////////////////////////////////////////////
190
- /////////////
184
+ ///センサから値を取得する処理 (省略)////
191
- ///センサから値を取得する処理
192
- //Androidに値を送る処理
193
- /////////////
185
+ //Androidに値を送る処理 ////
186
+ ////////////////////////////////////////////////
194
187
  }

4

情報の追加

2015/11/12 11:30

投稿

kt.tk.co
kt.tk.co

スコア27

title CHANGED
File without changes
body CHANGED
@@ -10,6 +10,8 @@
10
10
  ** 目的は、複数のセンサ値をArduinoで取得し、値をAndroidに渡して処理をすることです。**
11
11
 
12
12
 
13
+ (※センサはI2C通信とSPI通信に対応していますが、I2C通信だと2つまでしか同時に使用できないようです。合計8つまでの値を読み取ってAndroidに値を引き渡すのが目的のため、SPI通信を使用しております。)
14
+
13
15
  ![イメージ説明](f387058bed9479b9085fc10525214166.jpeg)
14
16
 
15
17
 
@@ -31,10 +33,14 @@
31
33
  ■原因を突き止めました。
32
34
  Arduinoのオンボードで付いているUSBホストポートはSPI通信で接続しているようでした。
33
35
  そのため、**複数センサの値をSPI通信にて取得する処理と干渉**してしまっているようでした。
36
+
34
37
  [参考サイト](https://www.arduino.cc/en/Main/ArduinoBoardMegaADK)
35
38
 
39
+ (I2C通信であれば、値を読み取ってAndroidに値を引き渡せましたが、2つのセンサしか接続できないため断念。)
36
40
 
37
41
 
42
+
43
+
38
44
  ■参考サイトの引用
39
45
  >>USB Host: MAX3421E. The MAX3421E comunicate with Arduino with the SPI bus. So it uses the following pins:
40
46
 

3

誤りの訂正

2015/11/12 11:28

投稿

kt.tk.co
kt.tk.co

スコア27

title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,7 @@
20
20
  ■現状
21
21
  ○ USBポートからAndroidに値を引き渡すことは達成済み
22
22
  ○ 複数のセンサからArduinoで値を取得することも達成済み
23
- ※しかし、「Arduinoで複数センサの値を取得 → Androidに引き渡す」 と処理を連結させると、Android端末への接続が切れてしまいます。
23
+ ※しかし、「Arduinoで複数センサの値を取得 → Androidに引き渡す」 と処理を連結させると、**Android端末への接続が切れて**しまいます。
24
24
 
25
25
 
26
26
 
@@ -29,7 +29,8 @@
29
29
 
30
30
 
31
31
  ■原因を突き止めました。
32
- それは、**Arduinoのオンボードで付いているUSBホストポートはSPI通信で接続しており、複数センサの値をSPI通信にて取得する処理と干渉してしまっている**ようでした。
32
+ Arduinoのオンボードで付いているUSBホストポートはSPI通信で接続しているようでした。
33
+ そのため、**複数センサの値をSPI通信にて取得する処理と干渉**してしまっているようでした。
33
34
  [参考サイト](https://www.arduino.cc/en/Main/ArduinoBoardMegaADK)
34
35
 
35
36
 
@@ -80,7 +81,7 @@
80
81
  ■症状を改めて整理
81
82
  Arduino上の配線を全て取り払い、AndroidにのみUSBホストから接続 → USBホスト使用可能
82
83
  Arduinoにセンサを配線し、SS(CS)ポートを接続しない → USBホスト使用可能
83
- Arduinoにセンサを配線し、SS(CS)ポートを接続する → USBホスト使用できない!
84
+ Arduinoにセンサを配線し、SS(CS)ポートを接続する → USBホスト使用できない!(おそらくSPI通信が干渉)
84
85
 
85
86
 
86
87
 

2

写真の追加

2015/11/12 11:24

投稿

kt.tk.co
kt.tk.co

スコア27

title CHANGED
File without changes
body CHANGED
@@ -10,19 +10,24 @@
10
10
  ** 目的は、複数のセンサ値をArduinoで取得し、値をAndroidに渡して処理をすることです。**
11
11
 
12
12
 
13
+ ![イメージ説明](f387058bed9479b9085fc10525214166.jpeg)
13
14
 
14
15
 
15
16
 
16
17
 
17
18
 
18
19
 
19
-
20
20
  ■現状
21
21
  ○ USBポートからAndroidに値を引き渡すことは達成済み
22
22
  ○ 複数のセンサからArduinoで値を取得することも達成済み
23
23
  ※しかし、「Arduinoで複数センサの値を取得 → Androidに引き渡す」 と処理を連結させると、Android端末への接続が切れてしまいます。
24
24
 
25
25
 
26
+
27
+ ![イメージ説明](10c4044fd9d1ec5602fddada51d4f327.jpeg)
28
+
29
+
30
+
26
31
  ■原因を突き止めました。
27
32
  それは、**Arduinoのオンボードで付いているUSBホストポートはSPI通信で接続しており、複数センサの値をSPI通信にて取得する処理と干渉してしまっている**ようでした。
28
33
  [参考サイト](https://www.arduino.cc/en/Main/ArduinoBoardMegaADK)

1

写真の追加。協調

2015/11/12 11:22

投稿

kt.tk.co
kt.tk.co

スコア27

title CHANGED
File without changes
body CHANGED
@@ -7,9 +7,16 @@
7
7
  「Arduino MEGA ADK」では基板上にUSBホストポートが付いております。←Android端末に接続するために使用。
8
8
  また、複数のセンサをSPI通信にてArduinoに接続しております。←使用。
9
9
 
10
- 目的としては、複数のセンサ値をArduinoで取得し、値をAndroidに渡して処理をすることです。
10
+ ** 目的は、複数のセンサ値をArduinoで取得し、値をAndroidに渡して処理をすることです。**
11
11
 
12
12
 
13
+
14
+
15
+
16
+
17
+
18
+
19
+
13
20
  ■現状
14
21
  ○ USBポートからAndroidに値を引き渡すことは達成済み
15
22
  ○ 複数のセンサからArduinoで値を取得することも達成済み
@@ -17,9 +24,11 @@
17
24
 
18
25
 
19
26
  ■原因を突き止めました。
20
- それは、Arduinoのオンボードで付いているUSBホストポートはSPI通信で接続しており、複数センサの値をSPI通信にて取得する処理と干渉してしまっているようでした。
27
+ それは、**Arduinoのオンボードで付いているUSBホストポートはSPI通信で接続しており、複数センサの値をSPI通信にて取得する処理と干渉してしまっている**ようでした。
21
- 参考サイトhttps://www.arduino.cc/en/Main/ArduinoBoardMegaADK
28
+ [参考サイト](https://www.arduino.cc/en/Main/ArduinoBoardMegaADK)
22
29
 
30
+
31
+
23
32
  ■参考サイトの引用
24
33
  >>USB Host: MAX3421E. The MAX3421E comunicate with Arduino with the SPI bus. So it uses the following pins:
25
34
 
@@ -27,6 +36,8 @@
27
36
  >> NB:Please do not use Digital pin 7 as input or output because is used in the comunication with MAX3421E
28
37
  >> Non broken out on headers: PJ3 (GP_MAX), PJ6 (INT_MAX), PH7 (SS).
29
38
 
39
+
40
+
30
41
  ■思考錯誤
31
42
  SS(CS)はデフォルトのDigital10や、その他のポートで試してみました。
32
43
  しかし、SPI通信でセンサから値を取得すると、Androidとの接続が切れてしまいます。
@@ -37,11 +48,17 @@
37
48
  SPI.setBitOrder(MSBFIRST) ; // ビットオーダー
38
49
  SPI.setClockDivider(SPI_CLOCK_DIV8); // クロック(CLK)
39
50
 
51
+
52
+
53
+
40
54
  残念ながら初心者の私にはお手上げ状態です。
41
55
  お力添え頂けますと幸いです。
42
56
  よろしくお願いします。
43
57
 
44
58
 
59
+
60
+
61
+
45
62
  ■センサ(気圧センサ LPS331AP)の配線
46
63
  3.3V:Arduinoの3.3V
47
64
  GND:ArduinoのGND
@@ -50,7 +67,11 @@
50
67
  SCK:Digital52にあたる場所
51
68
  SS(CS) → D10やD3やD40など様々試してみたが変化なし
52
69
 
70
+ ![イメージ説明](5cc749eb2e2ab9287f2409896917c59c.jpeg)
53
71
 
72
+
73
+
74
+
54
75
  ■症状を改めて整理
55
76
  Arduino上の配線を全て取り払い、AndroidにのみUSBホストから接続 → USBホスト使用可能
56
77
  Arduinoにセンサを配線し、SS(CS)ポートを接続しない → USBホスト使用可能
@@ -60,6 +81,13 @@
60
81
 
61
82
 
62
83
 
84
+
85
+
86
+
87
+
88
+
89
+
90
+
63
91
  ■ソースコード(一部省略しております。)
64
92
 
65
93
  #include <SPI.h>