Wire クラスを使用して、2 つの Arduino Unos が I2C を使用して通信します。Wire クラスは値 0 で送信を終了するようです。したがって、バイト 0x01、0x02、0x00、および 0x04 を送信すると、マスターは 0x01、0x02、0xFF、0xFF を受信します。
プロセッサ通信用に設計された通信ネットワークが 0x00 を送信できないのは奇妙に思えます。私が見た I2C の例はすべて ASCII のみを使用しています。ASCII に制限されたプロセッサ間通信は意味がないようです。I2C で何か不足していますか、それとも Arduino Wire クラスの実装上の制限ですか?
主人
void loop() {
Wire.requestFrom(2, 4);
while(Wire.available()) {
byte b = (byte) Wire.read();
Serial.println(b);
}
delay(1000);
}
スレーブ
void requestEvent() {
char bytes[4] = {0x01,0x02,0x00,0x04};
Wire.write(bytes);
}
結果は 1 2 255 255 です。
その 0x00 が 0x03 だったとき、1 2 3 4 という予想が得られました。