質問編集履歴
3
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -103,4 +103,8 @@
|
|
103
103
|
何故、送信順と同じ順番で受け取るようにしても、
|
104
104
|
1も2もone のほうに全て格納されてしまうのでしょうか。
|
105
105
|
|
106
|
-
エラー解消のアドバイスをご教授願います。
|
106
|
+
エラー解消のアドバイスをご教授願います。
|
107
|
+
|
108
|
+
arduino→arduinoは成功したものの、ラズパイ→arduinoが上手く行かなかったです。
|
109
|
+
|
110
|
+
頭の中が混乱していました。arduino→arduinoで解答くださった方、余計なお時間取らせてしまい申し訳ありませんでした。
|
2
python→arduino
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,32 +4,49 @@
|
|
4
4
|
|
5
5
|
### 該当のソースコード
|
6
6
|
|
7
|
-
/////////////////////////////////////////////////////////////////
|
8
|
-
```送信側```
|
9
|
-
include <Wire.h>
|
10
7
|
|
8
|
+
```
|
11
9
|
|
10
|
+
#ラズパイ→arduino
|
12
11
|
|
12
|
+
import cv2
|
13
|
+
import numpy as np
|
13
|
-
|
14
|
+
import smbus
|
14
|
-
Wire.begin();
|
15
|
-
Serial.begin(9600);
|
16
|
-
}
|
17
15
|
|
18
|
-
|
16
|
+
def main():
|
17
|
+
bus = smbus.SMBus(1)
|
18
|
+
adress1 = 0x05
|
19
19
|
|
20
|
-
|
21
|
-
int a = 1;
|
22
|
-
int b = 2;
|
23
|
-
|
20
|
+
img = cv2.imread('/home/test.jpeg')
|
24
|
-
Wire.write(a);
|
25
|
-
Wire.write(b);
|
26
|
-
Wire.endTransmission();
|
27
|
-
delay(500);
|
28
|
-
}
|
29
21
|
|
22
|
+
while True:
|
23
|
+
cv2.imshow('img',img)
|
30
24
|
|
25
|
+
ONE = 1
|
26
|
+
|
27
|
+
TWO = 1
|
28
|
+
|
29
|
+
one = int.from_bytes(ONE,'little')
|
30
|
+
two = int.from_bytes(TWO,'little')
|
31
|
+
|
32
|
+
bus.write_byte(adress1, one)
|
33
|
+
bus.write_byte(adress1, two)
|
34
|
+
|
35
|
+
key = cv2.waitKey(10)
|
36
|
+
# "Esc"キー押下で終了
|
37
|
+
if key == 27:
|
38
|
+
break
|
39
|
+
cv2.destroyAllWindows()
|
40
|
+
|
41
|
+
|
42
|
+
if __name__ == '__main__':
|
43
|
+
main()
|
44
|
+
|
45
|
+
|
46
|
+
```
|
47
|
+
|
31
48
|
////////////////////////////////////////////////////////////////
|
32
|
-
` ```受信側```
|
49
|
+
` ```受信側(arduino)```
|
33
50
|
include <Wire.h>
|
34
51
|
|
35
52
|
|
1
全体のコードを表示しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,21 +4,67 @@
|
|
4
4
|
|
5
5
|
### 該当のソースコード
|
6
6
|
|
7
|
+
/////////////////////////////////////////////////////////////////
|
7
8
|
```送信側```
|
8
|
-
|
9
|
+
include <Wire.h>
|
9
|
-
Wire.write(2); //1と2を送信
|
10
10
|
|
11
|
-
` ```受信側```
|
12
11
|
|
12
|
+
|
13
|
+
void setup() {
|
14
|
+
Wire.begin();
|
15
|
+
Serial.begin(9600);
|
16
|
+
}
|
17
|
+
|
18
|
+
void loop() {
|
19
|
+
|
20
|
+
|
21
|
+
int a = 1;
|
22
|
+
int b = 2;
|
23
|
+
Wire.beginTransmission(0x05);
|
24
|
+
Wire.write(a);
|
25
|
+
Wire.write(b);
|
26
|
+
Wire.endTransmission();
|
27
|
+
delay(500);
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
////////////////////////////////////////////////////////////////
|
32
|
+
` ```受信側```
|
33
|
+
include <Wire.h>
|
34
|
+
|
35
|
+
|
36
|
+
byte one = 0;
|
37
|
+
byte two = 0;
|
38
|
+
|
39
|
+
void setup() {
|
40
|
+
Serial.begin(9600);
|
41
|
+
Wire.onReceive(ReceiveMassage);
|
42
|
+
|
43
|
+
Wire.begin(0x05);
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
void loop(){
|
48
|
+
|
49
|
+
}
|
50
|
+
|
51
|
+
//i2cでのデータ受け取り
|
52
|
+
void ReceiveMassage(int n){
|
53
|
+
|
13
54
|
int one = Wire.read();
|
14
55
|
Serial.print("recv1: ");
|
15
56
|
Serial.println(one);
|
16
57
|
|
17
58
|
int two = Wire.read();
|
18
|
-
Serial.print("recv2:
|
59
|
+
Serial.print("recv2: ");
|
19
60
|
Serial.println(two);
|
61
|
+
}
|
20
62
|
|
63
|
+
delay(50);
|
64
|
+
}
|
21
65
|
|
66
|
+
//////////////////////////////////////////////////
|
67
|
+
|
22
68
|
という組み合わせでやっています。理想としては
|
23
69
|
recv1: 1
|
24
70
|
recv2: 2
|