Dunque ho riletto il codice e ho capito questo:
Ci sono 14 led, connessi ai pin da 0 a 13, 6 di queste uscite azionano dei relè, rimane il dubbio circa la sequenza di azionamenti.
Prendendo 6 bit di una porta da 8 bit partendo dal bit LSB fino al 5 bit, a caso prendiamo PORTA
PORTA = "b00111111"
Le possibili combinazioni sono in totale 64 incluso lo 0.
Si deve progressivamente commutare le uscite partendo da 0 fino a 63?
oppure basta accender il bit 0, poi in caso spegne lo 0 e accende 1, poi spegne 1 e accende 2 e così fino a 6.
Nel primo caso le configurazioni possibili sono 64, nel secondo sono solo 6.
Nel caso le configurazioni fossero 64 potrebbe essere utile partire dalla configurazione 64/2 = 32, in questo modo
male che vada devo effettuare 32 commutazioni per trovare quella che mi da un ros minore di tutte.
Concettualmente, la configurazione candidata è:
se nuovo_valore < vecchio_valore
configCandidate = currentConfig
e si fa il test per tutte le 32 combinazioni
Tempo addietro ho fatto un potenziometro a partitori commutati, con attenuazione totale di 127.5 decibel, quindi per aumentare l'attenuazione mi bastava incrementare il valore di una porta da 8 bit, per ridurre l'attenuazione ovviamente lo decrementavo, mi sa tanto che "campa" ha realizzato un sistema simile ma nel suo caso ciò che varia è l'impedenza.
@Michele
Non disperare, sono stati scritti libri dove emerge palesemente la difficolta di dialogo tra il committente di un software e gli ingegneri del software. Io in alcune situazioni avevo davanti persone e mi immagginavo di scrivere rm -f commercialista e vederlo scomparire. ]

PS: rm -f file :su unix sta per rimuovi forzatamente il file 'file'
Ciao