Vi aggiorno sulla situazione:
Il problema permane ma adesso avendo eliminato definitivamente (parola grossa... ) il blocco dell'arduino dovuto al blocco dell'I2C credo sia uscita alla luce la vera problematica.
L'arduino si riavvia continuamente. Probabilmente c' è qualche problema che bloccava anche il bus. Ho allegato uno schema per rappresentare meglio il vario cablaggio. Scusate se non è molto dettagliato ma il cablaggio è veramente complesso specie quello relativo alla parte del sistema funzionante.
Ho letto sul forum ed in rete che questo tipo di problema potrebbe essere dovuto alle seguenti cause:
1. l'arduino è costretto a fornire più mA di quelli che può;
2. memoria piena
3. BOD come menzionato nel post precedente.
Io non ho l'oscilloscopio ma ho potuto fare seguenti misure e considerazioni:
1. l'arduino con i faretti spenti consumo 22 mA
2. ogni mosfet attuato per accendere il faretto consuma circa 5/6 A
3. il totale con i 4 faretti accesi è appunto 45/46 mA.
il suddetto consumo comprende:
arduino
4 mosfet
modulo GY521
2 resistenze di pull-up da 3k7
Anomalia
l'unica cosa strana che ho misurato è una tensione residua sul pin 5 v di arduino con l'alimentazione 5V disconnessa. Ho verificato che il partitore collegato ad un pin analogico che misura la tensione della batteria introduce questa tensione residua sul pin 5V. E' normale?
Considerazioni
la linea a 5V che è sotto chiave come si vede dallo schema allegato, alimenta tutti gli altri arduino i quali non soffrono di nessun disturbo, quindi mi sento di escludere che l'alimentazione possa essere la causa del problema. Anche il consumo in mA non mi sembra proprio eccessivo. L'arduino da solo consuma 22 mA. Inoltre nell'incertezza ho saldato i pin 5V, GND e A4, A5, 3.3V per essere certo che la vibrazioni della moto non comportino problemi.
Ho fatto un test eliminando dal programma tutta la parte relativa al trattamento del modulo gy521 e relativi calcoli dell'angolo di piega per testare se la memoria fosse il problema. Nulla non funziona e d'altronde anche il check della memoria libera con l'apposita libreria mi dava ampi spazi.
detto questo, quale test ulteriore posso fare per verificare la causa del reboot?