Questions on the Wire library- I2C

I will attempt to answer the addressing question.

There really is no such thing as an 8bit address. There are only 7 and 10 bit addresses. I will only talk about 7bit addresses in this post.

When the I2C master sends a command the first byte of the command is the 7bit address along with the read/write bit in position bit 0.

Some datasheets will give you the 8bit address, which is the 7bit address that has been shifted left by 1 bit. If you ever see a datasheet that gives you an 8bit address you will notice that bit0 is always clear because that is the position for the read/write bit.

The Wire library will take the address you give it and and place it in bit7-bit1 in the first byte of the command and then set bit0 appropriately for read or write. If you give it an 8bit encoded address by mistake, the address that will get addressed on the bus will be shifted left by 1 bit. You would end up trying to address a device with an address twice the value of what you intended.