Estou lendo sobre o I2C. Nesse site:
http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission
Ele diz que endTransmission()
pode retornar um dos seguintes códigos de status:
- 0: envio bem-sucedido.
- 1: Envie buffer muito grande para o buffer twi. Isso não deve acontecer, pois o comprimento do buffer TWI definido em twi.h é equivalente ao comprimento do buffer de envio definido em Wire.h.
- 2: O endereço foi enviado e um NACK recebido. Este é um problema, e o mestre deve enviar uma condição de PARADA.
- 3: Os dados foram enviados e um NACK recebido. Isso significa que o escravo não tem mais o que enviar. O mestre pode enviar uma condição de PARADA ou um INÍCIO repetido. 4: Ocorreu outro erro de dois (por exemplo, o mestre perdeu a arbitragem do barramento).
Se eu não anexar nada ao meu Arduino (ou com resistores pull-up ao SDA / SCL), sempre recebo o status 2. Mas como um NACK (ou qualquer outra coisa) pode ser recebido quando não há nada com o que se comunicar? Isso significa outra coisa?
Aqui está o meu código de exemplo
#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
}