質問編集履歴

2

受信状況改善、すべてのデータ受信できず。

2022/04/05 06:14

投稿

yellowcloak
yellowcloak

スコア2

test CHANGED
File without changes
test CHANGED
@@ -46,3 +46,19 @@
46
46
  下記の通り送信するためにはどう対応したらいいのでしょうか。ご教示いただきたくよろしくお願いします。
47
47
 
48
48
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-05/da8a4f32-8494-44cd-8f96-f308f37d4b49.png)
49
+
50
+ アドバイスを頂き、下記の通りセンサよりデータを受信できました。ありがとうございます。
51
+ ここでまた**壁にぶつかっております。**  
52
+ ardiunoに受信データ数を増やすため以下の変更を行いました。
53
+
54
+ Wire.requestFrom(0x68, **141**);
55
+
56
+ しかし、32バイト分しかバッファが存在しないため、141バイト分すべてが受信できません。
57
+ 141バイト分を受信するためにどうしたらいいのでしょうか。 
58
+ バッファが埋まっているのでクリアしてあげる必要があると思っています。考え方は間違えないでしょうか。
59
+ 参考ソースご教示いただけるとありがたいです。 よろしくお願いします。
60
+
61
+
62
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-05/45390072-c797-43ee-a445-c71a1a321f58.png)
63
+
64
+

1

スレーブアドレスの誤記と、データ送信状況の更新

2022/04/05 02:21

投稿

yellowcloak
yellowcloak

スコア2

test CHANGED
File without changes
test CHANGED
@@ -9,14 +9,40 @@
9
9
  Wire.begin();
10
10
  }
11
11
  void loop() {
12
- Wire.beginTransmission(0x1E);
12
+ Wire.beginTransmission(0x~~1E~~);
13
13
  Wire.write(0xD0);
14
14
  Wire.write(0x4C);
15
15
  Wire.write(0x00);
16
16
  Wire.endTransmission();
17
17
 
18
- Wire.requestFrom(0x1E, 1, true);
18
+ Wire.requestFrom(0x~~1E~~, 1, true);
19
19
  byte val = Wire.read();
20
20
  Serial.print(val);
21
21
 
22
22
  期待値は0x02なのですが、0としかシリアルモニタに表示されません。アドバイスを頂きたくよろしくお願いします。
23
+ ---
24
+ お二方のアドバイスを頂き、送信データの状況を確認しました。
25
+ データシートを確認するとスレーブ側アドレスが0x68であり、訂正しております。(太字です。)
26
+ 下記は訂正後の結果です。
27
+
28
+ void loop() {
29
+ Wire.beginTransmission(**0x68**);
30
+ Wire.write(0xD0);
31
+ Wire.write(0x4C);
32
+ Wire.write(0x00);
33
+ Wire.endTransmission();
34
+
35
+ Wire.requestFrom(**0x68**, 1, true);
36
+ byte val = Wire.read();
37
+ Serial.print(val);
38
+
39
+
40
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-05/bc5e90a7-4928-4479-b227-4c2c5e4caf27.png)
41
+
42
+ スレーブ側センサのデータシートに通信例が記載があり、以下のようになっています。
43
+ 私が送信しているものとデータシートで差があるのは一番はじめの送信データです。データシートには0x68がありません。 
44
+ 下記の通り0xD0で送信したいのですが、
45
+ Wire.beginTransmissionは7ビットのためD0をどう送信したらいいのか悩んでおります。
46
+ 下記の通り送信するためにはどう対応したらいいのでしょうか。ご教示いただきたくよろしくお願いします。
47
+
48
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-04-05/da8a4f32-8494-44cd-8f96-f308f37d4b49.png)