Affianco al nome potresti mettere i link al profilo del forum. Il mio è: Arduino Forum E ricorda che sulla Leonardo non compila per via del nome del registro.
EDIT: Ops, non mi ero accorto che avessi inserito la modifica.
Eccomi qua. Per oggi basta
Posto l'ultima versione dove ho ottimizzato un po' tutto. Manca solo la parte LCD e dopo è terminato.
Ringrazio ancora PaoloP per il suo apporto.
PaoloP:
Ho trovato una cosa brutta sparsa nel codice
digitalWrite(14,LOW); ////Set ADC port low
digitalWrite(15,LOW);
digitalWrite(16,LOW);
Conviene usare
digitalWrite(A0,LOW); ////Set ADC port low
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
perché altrimenti il codice non è portabile tra diversi tipi di Arduino.
Lo so che è brutta, adesso cambio.
PaoloP:
Poi, all'inizio definisci
#define ADC_DDR DDRC //ADC port data direction register
e poi nel codice usi direttamente DDRC.
Perchè? :~
Rimasugli del porting, c'era fino ad un paio di versioni fa. Mi sono dimenticato di cancellare la definizione
Scusa, ho sbagliato. Alla fine darò una ripulita generale.
Adesso ho un problema che non so dove sbattere la testa.
L'I2C. Dopo che ho fatto la lettura e voglio visualizzare sull'LCD, resetto l'ADC, tento la scrittura sull'LCD ma si impianta tutto anche se reinizializzo LCD.
Qui però bisogna scegliere: se lavori con i registri il codice è veloce ma non portabilissimo.
Se lavori con le funzioni definite da Arduino ad un livello più alto, il codice è più portabile ma un pò più lento.
Poi sinceramente non ho capito perché incapsuli le funzioni wait_20ms o wait_5ms.
Non fai prima a scrivere nel codice il delay e la chiamata alla funzione di lettura senza rimandare ad una funzione che ne chiama un'altra.
Sono d'accordo anche io per la modularizzazzione, ma quando è troppo....
Poi, comunque, il compilatore ottimizza, ma il codice diventa illeggibile.
Versione 0.6h
Ci stiamo avvicinando alla versione finale.
Alcune considerazioni:
#define LCD_PRINT //Permette l'Output su LCD
#define DEBUG_PRINT //Permette l'Output su console Seriale
l'Output su seriale sembra funzionare bene.
l'Output su LCD funziona ma fino a quando non implemento il pulsante non visualizza tutte le informazioni sul componente.
Ho cercato di fare più pulizia possibile al codice. (E altra ce ne vorrà)
PaoloP:
Qui però bisogna scegliere: se lavori con i registri il codice è veloce ma non portabilissimo.
Se lavori con le funzioni definite da Arduino ad un livello più alto, il codice è più portabile ma un pò più lento.
Bisogna trovare una via di mezzo. Come dici te però la portabilità sarà un bel problema.
PaoloP:
Poi sinceramente non ho capito perché incapsuli le funzioni wait_20ms o wait_5ms.
Non fai prima a scrivere nel codice il delay e la chiamata alla funzione di lettura senza rimandare ad una funzione che ne chiama un'altra.
Sono d'accordo anche io per la modularizzazzione, ma quando è troppo....
Poi, comunque, il compilatore ottimizza, ma il codice diventa illeggibile.
Release dopo release ottimizzo e pulisco. Se ti ricordi all'inizio avevo fatto una serie di funzioni waitXXXXus(), adesso c'è ne solo una
Considerazioni finali:
Lo sto testando, posso affermare con serenità che è uno strumentino interessante, superiore al DCA (Non penso di dire boiate).
Buon lavoro,
pighixxx:
Lo sto testando, posso affermare con serenità che è uno strumentino interessante, superiore al DCA
Questo ce lo potrebbe dire Michele, che, se non ho capito male, ha anche il DCA.
Appena sarà terminato il lavoro potrebbe fare una recensione comparativa. (Se ne ha voglia, s'intende)
PaoloP:
Questo ce lo potrebbe dire Michele, che, se non ho capito male, ha anche il DCA.
Appena sarà terminato il lavoro potrebbe fare una recensione comparativa. (Se ne ha voglia, s'intende)
Infatti, la mia voleva essere una provocazione
Però questo fa più del DCA...
Quando viene visualizzata una bandierina sull'lcd vuol dire che sono disponibili ulteriori informazioni per il componente (Premere il pulsante per visualizzarle)
Se non si vuole usare il pulsante rimuovere la seguente riga: #define BUTTON_INST
Nota:
Il pulsante è collegato tra il pin2 e la massa.