Multiple I2C devices can be connected to the same clock and data lines. This means you can have many different sensors and devices all connected to the same couple pins from your development board. The I2C protocol uses a 7-bit address assigned to each device as a way for the development board to talk to a specific device.
Send 7-bit slave address with write bit (R/W = 0). Send sub address or location on I2C device where u want to read from, after this the internal address pointer of I2C device points to location where u want to read from. This is called dummy write. Now send a repeated start condition. Send 7-bit slave address with read bit (R/W = 1).
I2c read write bit
If you use Wire.write in the slave to send only a single value, then in the master you can only request a single byte: Wire.requestFrom(4, 1). Basically you can only call Wire.write once in the slave per request from the master. If you have to send multiple bytes you need to send an array.
I2C is a serial communication protocol, so data is transferred bit by bit along a single wire (the SDA line). Like SPI, I2C is synchronous, so the output of bits is synchronized to the sampling of bits by a clock signal shared between the master and the slave.
This enhancement can be mixed with 7 bit addressing and increases the available address range about ten times.After the start condition, a leading ‘11110’ introduces the 10 bit addressing scheme.The last two address bits of the first byte concatenated with the eight bits of the second byte of the whole 10 bit address.