Ardutester - Arduino Component Tester (INCOMPLETO)

PaoloP:
Se cycle è vero ripete il ciclo se è falso lo esegue solo una volta.
Il break serve per uscire dal ciclo while interno.

Grazie Paolo,
Dopo posto la nuova versione (Se mi autorizzi ti cito tra i contributors :D)

cece99:
Quale mp?
Ciao
C

Ti ho inviato un'email.

pighixxx:
Se mi autorizzi ti cito tra i contributors :smiley:

Si, ma solo se funziona. :wink:

pighixxx:

PaoloP:
Se cycle è vero ripete il ciclo se è falso lo esegue solo una volta.
Il break serve per uscire dal ciclo while interno.

Grazie Paolo,
Dopo posto la nuova versione (Se mi autorizzi ti cito tra i contributors :D)

cece99:
Quale mp?
Ciao
C

Ti ho inviato un'email.

Risposto
Ciao
C

Grande Paolo (+1 è il minimo)
Funzia tutto!
Da adesso ArduTester è GOTO FREE :smiley:

In allegato la versione 0.6F, Mo si va avanti con il lavoro...

v06f.ino (104 KB)

Ok, funziona tutto benissimo
Ciao
C

cece99:
Ok, funziona tutto benissimo
Ciao
C

Sono contento :wink:

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. :sweat_smile:

PaoloP:
Affianco al nome potresti mettere i link al profilo del forum. Il mio è: Arduino Forum

Sarà fatto :smiley:

Eccomi qua. Per oggi basta :smiley:
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 :astonished:

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 codice :astonished:

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. :roll_eyes:

Risolto anche il problema dell'LCD. Entro breve posto la versione spero definitiva :smiley:

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. :smiley:

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 :smiley:

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. :wink: (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. :wink: (Se ne ha voglia, s'intende)

Infatti, la mia voleva essere una provocazione :smiley:
Però questo fa più del DCA...

Nuova versione (0.6i)
Il pulsante funziona :grin:

  • Premerlo per iniziare il probing.
  • 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.

v06i.ino (107 KB)

Appena testato e funziona tutto
Ciao
C

Nuova versione 06j disponibile (download al primo post)

  • Powersave functions
  • Code Cleanup
  • Flag only when more info availables
  • Sorpresa :smiley: