Mauro: hai perfettamente ragione, seguendo la logica binaria provo tutti i valori e quando arrivo ad un ROS superiore al precedente mi basta tornare indietro di un passo, la cosa apparentemente allunga ma di fatto si semplifica notevolmente.
Si, dipende, cioè se la configurazione migliore è la 63° li devo scorrere tutte da 0 a 62 per scoprire la 63° è meglio della 62°, per questo nei post precedenti ho ipotizzato l'idea di partire dal centro, cioè da 64 / 2 (perchè da 0 a 63 ci sono 64 configurazioni diverse), quindi si parte da 32.
Questa volta l'algoritmo prima deve sceglire il senso, cioè se incrementando ROS peggiora, non resta che fare la cosa opposta cioè decrementare.
Però se per caso estremo il ROS migliore si trova nella configurazione 2, per poi dopo 2 ore trovarsi nella configurazione 63, devo per forza testare tutte le configurazioni intermedie. Un decisioni in merito alla logica va presa appunto a ragion veduta e al momento non sappiamo cosa è più saggio.
Estrema:
Sicuramente è possibile stabilire qualè la differenza di ROS tra una configurazione e l'atra successiva, es Conf[23] e Conf[24], che per lavorare con i numeri la ipotizzo io a caso attribuendogli un valore di 0.1 ROS, quindi es Conf[23]-ROS1.8 e Conf[24]-ROS1.8 - 0.1.
Sicuramente è possibile creare una tabella, in base al ROS come valore assoluto con riferimento ad una configurazione di default, che potrebbe essere 64/2, quindi se con ROS= 2 la differenza tra configurazioni adiacenti vale 0.1, con ROS = 3 la differenza tra configurazioni adiacenti è 0.2, ecc. Questa tabella potrebbe essere il software stesso a compilarla, anzi spedisce i dati al computer dove c'è un programma che li archivia di modo che si possano studiare al fine di determinare un algoritmo che possa ad esempio decidere di saltare 5 configurazioni di colpo perchè la tabella dice che almeno 5 configurazioni più in la si dovrebbe trovare il migliore dei ROS, magari non è così, ma bastano alcune iterazioni per vedere se la migliore è la precedento o la successiva, comunque un bel salto di 5 velocizza di molto l'algoritmo.
Il tempo che l'algoritmo impiega per trovare il miglior ROS è fondamentale, perchè più allunghiamo il tempo più il ROS cambia per cause ambientali e ad esempio la configurazione scartata ora potrebbe essere quella migliore.
Io non posso codificare lato arduino, perchè uso il C nudo è crudo è sono una schiappa con Arduino core, ci ho perso la mano, quindi non scrivo codice intero, se possibile scrivero spezzoni di codice C generico, ma l'impegno non posso neanche prendermelo perchè sto scrivendo un protocollo PC to arduino e di tanto in tanto divago quando mancano le ide e vengo qui sul forum. Però non vorrei affatto si sottovalutasse il contributo che sto dando in merito alla analisi del problema e alla logica del programma. In definitiva Michele come hai detto tu l'obbiettivo è realizzare il pezzo di programma che gestisce solo L, si lavora su questo e quando lo si ritiene opportuno si passa ad altro, no perchè il codice che funziona mostra lati del problema che prima non apparivano lampanti.
Ciao.