Ardutester - Arduino Component Tester (INCOMPLETO)

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:

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

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

In checkbutton c'è

lcd.noBacklight();

senza gli ifdef. :fearful: :grin:

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

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

ardutester.ino (107 KB)

PaoloP:
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. :grin: :grin: :grin:

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

Il primo post conterrà le ultime versioni di tutto... :smiley:

cece99:
Bello lo splash screen finale col ringraziamento...

Era doveroso ed il minimo che potevo fare...

Prima pagina aggiornata con correzione schemi.
Ciao :smiley:

Confermo di avere il DCA-55, non ho gelosie e non ho bisogno di essere provocato :grin:, sono molto incuriosito dal fatto che legga anche i componenti passivi, poiché possiedo una vasta e solida strumentazione sono in grado di fare prove serie e confermare o meno la validità dello strumento. Il problema, come detto, è il tempo, ho non meno di 5 progetti da completare, sono in ritardo e sono incasinato all'UNI, però ho anche un'idea, lasciatemi ragionarci su.... per ora complimenti!!!

Pighixxx,
nel setup, dove c'è l'inizializzazione dell'ADC, prova ad inserire:

DIDR0 = 0b00111111;			//DIDR0 – Digital Input Disable Register 0 - Disable digital input on analog pins

serve per disabilitare gli ingressi digitali collegati ai pin analogici che creano imprecisioni nelle letture.
--> ATmega ADC tutorial | Open Music Labs

Potresti fare anche una versione R3 della scheda? Devi aggiungere i pin SDA e SCL dopo AREF e GND.
In quel modo la scheda è utilizzabile anche con la MEGA e la Leonardo, anche se il codice è ancora da testare con tali schede.

Paolo, non è la stessa cosa metterli semplicemente in OUTPUT, così non tocchi i registri....

Dalla spiegazione del sito pare di no. E se tra i tuoi progetti c'è lo studio dell'ADC del 328, dovresti approfondire. :wink:

Per quanto riguarda i registri... ArduTester e tutto "un toccare di registri". Non mi preoccupa.

:smiley:
Grazie

PaoloP:
Pighixxx,
nel setup, dove c'è l'inizializzazione dell'ADC, prova ad inserire:

DIDR0 = 0b00111111;			//DIDR0 – Digital Input Disable Register 0 - Disable digital input on analog pins

serve per disabilitare gli ingressi digitali collegati ai pin analogici che creano imprecisioni nelle letture.
--> ATmega ADC tutorial | Open Music Labs

Interessante l'articolo. Do un'occhiata e provo. Grazie

PaoloP:
Potresti fare anche una versione R3 della scheda? Devi aggiungere i pin SDA e SCL dopo AREF e GND.
In quel modo la scheda è utilizzabile anche con la MEGA e la Leonardo, anche se il codice è ancora da testare con tali schede.

Sto già lavorandoci :smiley:

ho visto che includi due librerie solo se si vuole usare l'LCD, mi chiedevo se servisse veramente, perche' credo che se le librerie incluse non vengono usate nel codice compuque non vengono compilate giusto ? quindi potresti lasciarle e basta

lo schema elettrico di questo shield ? perche' non lo posti insieme alla scheda nel primo post ? siamo in Megatopic mica bruscolini :slight_smile:

Inoltre per il discorso leggibilita', essendo un codice bello lungo, io mi trovo molto bene con l'uso delle Tab nell'IDE ufficiale, chiarisce e distribuisce meglio il tutto.

Paolo, ovviamente studierò il tuo link ma soprattutto voglio approfondire sul data-sheet, la cosa mi interessa non solo per lo studio sull'ADC, che è a medio termine, ma soprattutto per il Frequenzimetro LCD, settimana prossima mi arrivano i PCB e quindi dovrò iniziare l'ottimizzazione del codice e soprattutto della gestione dell'ADC che gioca un ruolo importante, quindi proverò quella riga di comando, visto che uso un solo pin Ax e gli altri li ho lasciati volutamente liberi.