Official topic: multicotteri con arduino!

lesto:
uhhh hai completamente ragione, ho confuso 4microsec con 4ms!!! mea culpa

Comunque il test che fai è sbagliato lo stesso perché nel conteggio del tempo ci va pure il ciclo for, che si prende i suoi 2-3us, il tempo reale sono i poco meno 2us che ti ho detto, misurati strumentalmente a suo tempo sul tempo che ci mette un pin a cambiare stato tra due digitalWrite consecutive, stessa cosa per la digitalRead misurata come offset in mezzo a due digitalWrite.
In tutti i casi non puoi ottenere un baud rate pari ad 1/2 del tempo di commutazione perché in mezzo c'è pure il tempo per eseguire lo shift del registro da inviare/leggere bit a bit su un pin.
Non a caso ti ho detto di usare la I2C hardware come slave, a 400 kHz, per comunicare con il resto del sistema e usare la I2C emulata in software per leggere il Nunchuk.
Prima di tutto è più semplice emulare un master che uno slave, e poi c'è il fatto che il Nunchuk ha una banda limitata, mi pare al massimo 100Hz, quindi puoi prenderti tutto il tempo che vuoi per leggerlo, non ti serve spingere l'I2C master ad alte velocità, anche se lo leggi 1000 volte al secondo non cambia nulla, alla fine sempre 100 valori diversi, distanziati di circa 10 ms, ottieni.
Non scordarti che i valori 100kHz e 400kHz sono i limiti di velocità e non la velocità obbligatoria, ovvero l'I2C puoi farla funzionare con un clock che parte da poche centinaia di Hz, con alcuni device pure meno di 1 Hz, fino al limite massimo ammesso e non deve nemmeno essere costante perché è una seriale sincrona, ovvero tutto va in funzione del clock generato dal master.