

If you want to read from a specific register, you must first move the pointer to that address with a write() command. Another Wire.write(v1) was sent, the slave device would've automatically incremented the pointer to the next address (r+1) and written 'v1' into that register.

This tells the slave that you're done giving it instructions for now. Now that the pointer is 'pointing' at the specific register you wanted, this command will replace the byte stored in that register with the value 'v'. You can think of the pointer as a read/write head. This first byte written here 'r' moves the register pointer to the register with address 'r'. This begins transmission to slave device, where 'address' is the slave device's address. To understand that, you should first understand how the write command operates. Uint16_t touched = ((MSB << 8) | LSB) //16bits that make up the touch states And, it's used in that same example code, here.
