Untuk membuat I2C Slave, kita harus men-definisikan alamat slave serta melengkapinya dengan fungsi untuk mengirim dan menerima data. Dalam contoh berikut, sinyal acknowledge berupa pengiriman balik digit yang diterima slave.
#include <Wire.h> #define SLAVE_ADDRESS 0x04 int number = 0; int state = 0; void setup() { pinMode(21, OUTPUT); Serial.begin(9600); Wire.begin(SLAVE_ADDRESS); Wire.onReceive(receiveData); Wire.onRequest(sendData); Serial.println("Ready!"); } void loop() { delay(100); } // callback for received data void receiveData(int byteCount) { while(Wire.available()) { number = Wire.read(); Serial.print("data received: "); Serial.println(number); if (number == 1) { if (state == 0) { digitalWrite(21, HIGH); state = 1; } else { digitalWrite(21, LOW); state = 0; } } } } // callback for sending data void sendData() { Wire.write(number); }