...

void requestEvent() Wire.write("Hello from slave");

void loop() | Function | Description | Example | |----------|-------------|---------| | Wire.begin() | Initialize as master | Wire.begin() | | Wire.begin(address) | Initialize as slave | Wire.begin(0x08) | | Wire.beginTransmission(addr) | Start transmission | Wire.beginTransmission(0x3C) | | Wire.write(data) | Queue data to send | Wire.write(0xFF) | | Wire.endTransmission() | Send queued data | Wire.endTransmission() | | Wire.requestFrom(addr, bytes) | Request data from slave | Wire.requestFrom(0x3C, 6) | | Wire.available() | Check available bytes | if(Wire.available()) | | Wire.read() | Read a byte | byte b = Wire.read() | Complete Example: Scanning for I2C Devices #include <Wire.h> void setup() Wire.begin(); Serial.begin(9600); Serial.println("I2C Scanner");

| Device | Typical Address | |--------|----------------| | OLED Display (SSD1306) | 0x3C | | RTC DS3231 | 0x68 | | Temperature Sensor (BMP280) | 0x76 or 0x77 | | EEPROM (24LC256) | 0x50 | | LCD Backpack (PCF8574) | 0x27 or 0x3F | Advanced Usage: Multiple Bytes // Sending multiple bytes Wire.beginTransmission(0x50); Wire.write(0x00); // Address high byte Wire.write(0x00); // Address low byte Wire.write("Hello"); Wire.endTransmission(); // Reading multiple bytes Wire.requestFrom(0x50, 10); while(Wire.available()) char data = Wire.read();

for(address = 1; address < 127; address++) Wire.beginTransmission(address); error = Wire.endTransmission();

if(error == 0) Serial.print("Found device at 0x"); if(address < 16) Serial.print("0"); Serial.println(address, HEX); devices++;

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.