Je lis sur I2C. Sur ce site:
http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission
Il indique que endTransmission()
peut renvoyer l'un des codes d'état suivants:
- 0: envoi réussi.
- 1: envoyer un tampon trop volumineux pour le tampon twi. Cela ne devrait pas se produire, car la longueur du tampon TWI définie dans twi.h est équivalente à la longueur du tampon d'envoi définie dans Wire.h.
- 2: L'adresse a été envoyée et un NACK a été reçu. C'est un problème et le maître doit envoyer une condition STOP.
- 3: Des données ont été envoyées et un NACK a été reçu. Cela signifie que l'esclave n'a plus à envoyer. Le maître peut envoyer une condition STOP ou un START répété. 4: Une autre erreur twi s'est produite (par exemple, l'arbitrage du bus maître perdu).
Si je n'attache rien à mon Arduino (ou avec des résistances de rappel aux deux SDA / SCL), j'obtiens toujours le statut 2. Mais comment un NACK (ou quoi que ce soit) peut-il être reçu quand il n'y a rien pour communiquer avec? Cela signifie-t-il autre chose?
Voici mon exemple de code
#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
}