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.
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.
PaoloP:
Affianco al nome potresti mettere i link al profilo del forum. Il mio è: Arduino Forum
Sarà fatto
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.
v06g.ino (105 KB)
Adesso provo....
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.
Poi, all'inizio definisci
#define ADC_DDR DDRC //ADC port data direction register
e poi nel codice usi direttamente DDRC.
Perchè? :~
PaoloP:
Ho trovato una cosa brutta sparsa nel codicedigitalWrite(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.
Risolto anche il problema dell'LCD. Entro breve posto la versione spero definitiva
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
v06h.ino (106 KB)
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...
Nuova versione (0.6i)
Il pulsante funziona
Se non si vuole usare il pulsante rimuovere la seguente riga: #define BUTTON_INST
Nota:
Il pulsante è collegato tra il pin2 e la massa.
v06i.ino (107 KB)
Appena testato e funziona tutto
Ciao
C
Nuova versione 06j disponibile (download al primo post)
Di fianco all'include della liquidcristal I2C puoi mettere il link al sito dove l'hai scaricata? Dovrebbe essere quella di H Mario. Giusto?
pighixxx:
- Sorpresa
La versione è la J ma nel codice c'è:
const char Version_str[] PROGMEM = "v0.6g";
Se commento#define LCD_PRINT //Print on I2C LCD
non compila
In checkbutton c'è
lcd.noBacklight();
senza gli ifdef.
Bello lo splash screen finale col ringraziamento...
So di essere scassapalle, ma quando sarà tutto bello funzionante, non è che puoi fare un riassunto?
Cioè, come deve essere collegato LCD (seriale,I2C,...), il pulsante (a quali pin), etc. ?
Per non doversi leggere 8 pagine di post
Versione K
Spostato la definizione del display prima del setup e dopo tutte le altre dichiarazioni.
Adesso se non si definisce l'LCD funziona.
Aggiunto gli indef dimenticati
Cambiato in ADC HiZ i valori 0, 1 e 2 con i corrispondenti TP1, TP2, TP3.
Corretto un lcd.print con lcd_print
Lasciato il ringraziamento per somma modestia.
ardutester.ino (107 KB)
PaoloP:
Versione KSpostato la definizione del display prima del setup e dopo tutte le altre dichiarazioni.
Adesso se non si definisce l'LCD funziona.Aggiunto gli indef dimenticati
Cambiato in ADC HiZ i valori 0, 1 e 2 con i corrispondenti TP1, TP2, TP3.
Corretto un lcd.print con lcd_printLasciato il ringraziamento per somma modestia.
Mitico
Ho aggiornato il primo post con l'ultima versione (mi sono solo limitato a sistemare l'indentazione e a dare i giusti onori alla versione K)
nid69ita:
So di essere scassapalle, ma quando sarà tutto bello funzionante, non è che puoi fare un riassunto?Cioè, come deve essere collegato LCD (seriale,I2C,...), il pulsante (a quali pin), etc. ?
Per non doversi leggere 8 pagine di post
Il primo post conterrà le ultime versioni di tutto...
cece99:
Bello lo splash screen finale col ringraziamento...
Era doveroso ed il minimo che potevo fare...