I2Cについて読んでいます。このサイトで:
http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission
それはendTransmission()
次のステータスコードのいずれかを返すことができると言います:
- 0:送信に成功しました。
- 1:送信バッファーがtwiバッファーに対して大きすぎます。twi.hで設定されたTWIバッファー長は、Wire.hで設定された送信バッファー長と同等であるため、これは発生しません。
- 2:アドレスが送信され、NACKが受信されました。これは問題であり、マスターはSTOP条件を送信する必要があります。
- 3:データが送信され、NACKが受信されました。これは、スレーブが送信する必要がないことを意味します。マスターは、STOP条件または繰り返しSTARTを送信できます。4:別のtwiエラーが発生しました(たとえば、マスターがバスアービトレーションを失った)。
Arduinoに何も接続しない場合(またはSDA / SCLの両方にプルアップ抵抗を使用する場合)、常にステータス2を取得します。それは何か他の意味ですか?
これが私のサンプルコードです
#include "Wire.h"
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
Wire.beginTransmission(42);
Wire.write(0);
byte status = Wire.endTransmission();
Serial.println(status); // always prints 2
}