Programma non esegue una parte dopo modifica

Ciao a tutti,
vi allego un programma fatto con arduino mega, dopo aver fatto alcune modifiche non mi funziona più una parte, è una settimana che cerco, ma non trovo errori, il problema è dalla riga 265 dove si verifica se il motore è in moto, nello specifico alla riga 304 il programma dovrebbe spegnere il quadro dopo 3 secondi se il motore non si è avviato, ma ciò non accade.
La parte hardware funziona, perchè col vecchio programma va regolarmente.
Utilizzo millis per la temporizzazione, che controllando bene, il tempo viene azzerato correttamente, ma anche se trascorsi i 3 secondi non viene eseguita quella parte di programma che dovrebbe spegnere il quadro... Chi ha voglia di darmi un'occhio su cosa ho combinato?
Altrimenti riscrivo tutto da capo, anche se mi piaceva capire dove ho errato.
Ringrazio tutti, un salutoTest_non_va.ino (33.2 KB)

Hai la versione precedente funzionante del programma? Se si metti anche quella che confrontandole magari si trova più velocemente il problema.
Da una prima velocissima occhiata non dovrebbe aver problemi, ma ho anche visto che il codice è duplicato nella funzione che avvia il motore quindi già c'è qualcosa che non torna. Se realmente ti serve il solito codice in due punti fai una funzione e richiama quella

Ciao,
si, ho il vecchio programma, ma ho cambiato quasi tutto proprio perchè era fatto male, con codice ripetuto e molto lungo, lo scopo era alleggerirlo, comunque posso metterlo...
Mi diresti che parte intendi che è ripetuta nella funzione? Almeno poi correggo.
Sono un principiante, sono conscio che il programma non è ad ok :slight_smile:

Test_funzionante.ino (38.9 KB)

Dentro la funzione avviamento c'è tutta la parte di gestione del quadro, motorino avviamento ecc. che è ripetuta anche in altre parti del codice, quello intendo, e probabile che vi siano altre parti identiche copiate ed incollate in più punti.
Per il resto non saprei non vedo a colpo d'occhio qualcosa di specifico.
Inoltre non so se modifiche di tale livello ad un veicolo possano rientrare nel regolamento del forum... la cosa che mi da da pensare maggiormente è la disattivazione del quadro se il motore si spegne, se stai andando e per un problema di rilevamento Arduino crede che il motore sia spento e spegne il quadro credo non sia per nulla sicuro.

Comunque mi sembra che il calcolo dei giri non possa funzionare...

Ciao fabpolli, queste centraline sono utilizzate solo su vetture di mia proprietà e di uso sportivo, pertanto non soggette a regolamentazione stradale etc, inoltre si lavora a tensioni di 12V, che dovrebbero essere consentite dal regolamento del forum... Però nel caso qualcosa non vada bene, fate bene ad informarmi, grazie.

Nella funzione avviamento c'è solo la parte che gestisce il controllo del motorino avviamento, le copie di parte del codice altrove, fanno altri controlli, senza toccare il motorino avviamento, comunque si, qualcosa da migliorare c'è sicuramente...
Il quadro viene spento in caso di spegnimento del motore, per azzerare varie spie sul cruscotto del veicolo, nel caso si facesse nuovamente l'avvio senza aver spento il quadro, tali spie resterebbero in allarme...

Datman, i giri li vedevo in seriale quando ho fatto la scheda, posso controllare ancora, nel caso abbia modificato per sbaglio qualcosa, faccio verifiche, grazie :slight_smile:

Ciao Datman,
i giri sono visualizzati correttamente, anche perchè sono la parte fondamentale per il controllo del motorino avviamento, cosa non ti torna? :slight_smile:

Ciao,
ho risolto riscrivendo quasi tutto il programma, non ho capito qual'era il problema, forse qualche annidamento di funzioni...
Grazie, un saluto :slight_smile: