Saya membaca tentang I2C. Di situs ini:
http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission
Dikatakan bahwa endTransmission()
dapat mengembalikan salah satu kode status berikut:
- 0: Kirim berhasil.
- 1: Kirim buffer terlalu besar untuk buffer twi. Ini seharusnya tidak terjadi, karena panjang buffer TWI yang diatur di twi.h setara dengan panjang buffer yang diset di Wire.h.
- 2: Alamat dikirim dan NACK diterima. Ini adalah masalah, dan master harus mengirim kondisi STOP.
- 3: Data dikirim dan NACK diterima. Ini berarti budak tidak lagi mengirim. Master dapat mengirim kondisi STOP, atau MULAI berulang. 4: Kesalahan twi lain terjadi (misalnya, master arbitrasi bus hilang).
Jika saya tidak memasang apa pun pada Arduino saya (atau dengan resistor pull-up ke kedua SDA / SCL), saya selalu mendapatkan status 2. Tapi bagaimana NACK (atau apa pun) dapat diterima ketika tidak ada yang berkomunikasi dengan? Apakah ini berarti sesuatu yang lain?
Ini contoh kode saya
#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
}