I2C questo sconosciuto

l'i2c in realtà è abbastanza semplice. prima di tutto ti serve il datasheet del sensore che vuoi usare. esso possiede un indirizzo, tipo 0x2A.
ogli sensore ha un elenco di registri, anche loro con un indirizzo simile a quello di prima.

quindi se vuoi modificare un registro, apri una comunicazione con l'indirizzo del sensore, invii l'indirizzo del registro che vuoi modificare, invii il nuovo valore che il registro deve avere, ed infine chiudi la comunicazione.

per leggere è molto simile: apri la comunicazione con l'indirizzo del sensore, invii il numero di registro da cui PARTIRE a leggere, il numero di byte (ogni registro è un byte) che vuoi leggere, e poi ti metti in ascolto. ricevuti i messaggi chiudi la comunicazione.

molto spesso negli esempi su internet non usano la libreria Wire, perchè ha una grossa limitazione: se qualcosa non funziona bene, essa rimane bloccata. invece altre librerie restano bloccate solo un tot di tempo, dopodiché rilevano il timeout e permettono al programma di andare avanti. molto utile per evitare che se un cavo con la imu si stacca, o un disturbo particolarmente forte, facciano impazzire completamente la tua applicazione.