前提・実現したいこと
1byteずつ読み込むことによって、値を区別したいです。
該当のソースコード
#ラズパイ→arduino import cv2 import numpy as np import smbus def main(): bus = smbus.SMBus(1) adress1 = 0x05 img = cv2.imread('/home/test.jpeg') while True: cv2.imshow('img',img) ONE = 1 TWO = 1 one = int.from_bytes(ONE,'little') two = int.from_bytes(TWO,'little') bus.write_byte(adress1, one) bus.write_byte(adress1, two) key = cv2.waitKey(10) # "Esc"キー押下で終了 if key == 27: break cv2.destroyAllWindows() if __name__ == '__main__': main()
////////////////////////////////////////////////////////////////
` 受信側(arduino)
include <Wire.h>
byte one = 0;
byte two = 0;
void setup() {
Serial.begin(9600);
Wire.onReceive(ReceiveMassage);
Wire.begin(0x05);
}
void loop(){
}
//i2cでのデータ受け取り
void ReceiveMassage(int n){
int one = Wire.read();
Serial.print("recv1: ");
Serial.println(one);
int two = Wire.read();
Serial.print("recv2: ");
Serial.println(two);
}
delay(50);
}
//////////////////////////////////////////////////
という組み合わせでやっています。理想としては
recv1: 1
recv2: 2
recv1: 1
recv2: 2
となってほしいですが、
シリアルモニタには
recv1: 1
recv2: -1
recv1: 2
recv2: -1
と表示されてしまいます。
おそらくー1はエラーの意味だと思うのですが、
何故、送信順と同じ順番で受け取るようにしても、
1も2もone のほうに全て格納されてしまうのでしょうか。
エラー解消のアドバイスをご教授願います。
arduino→arduinoは成功したものの、ラズパイ→arduinoが上手く行かなかったです。
頭の中が混乱していました。arduino→arduinoで解答くださった方、余計なお時間取らせてしまい申し訳ありませんでした。
回答2件
あなたの回答
tips
プレビュー