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

質問編集履歴

3

追記

2021/12/10 14:40

投稿

退会済みユーザー
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

2021/12/10 14:40

投稿

退会済みユーザー
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
- void setup() {
14
+ import smbus
14
- Wire.begin();
15
- Serial.begin(9600);
16
- }
17
15
 
18
- void loop() {
16
+ def main():
17
+ bus = smbus.SMBus(1)
18
+ adress1 = 0x05
19
19
 
20
-
21
- int a = 1;
22
- int b = 2;
23
- Wire.beginTransmission(0x05);
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

全体のコードを表示しました

2021/12/10 14:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -4,21 +4,67 @@
4
4
 
5
5
  ### 該当のソースコード
6
6
 
7
+ /////////////////////////////////////////////////////////////////
7
8
  ```送信側```
8
- Wire.write(1);
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