Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino, il mio contatore Geiger con Arduino
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Beh... Dove dichiaro le variabili c'è un'ampia spiegazione del loro significato, sicuramente più esplicativa di qualunque nome... Chiunque sia interessato alla comprensione, quindi, può molto semplicemente sostituire i nomi delle variabili come preferisce, anche in maniera automatizzata con Trova e Sostituisci.
Alcune variabili, che dichiarai come globali non conoscendo inizialmente la differenza, in realtà potrebbero essere dichiarate localmente, ma non vorrei mettermi a fare modifiche rischiando di fare danni, che potrebbero anche non essere evidenti...
t1...t7, ad esempio, credo che possano tutte essere dichiarate localmente, così come molte altre variabili con nome breve. Proprio alle variabili che vengono usate localmente, in generale, ho dato i nomi più brevi.
Un po' di logica nei nomi c'è... Ad esempio:
E è la lettura dell'encoder, che può valere 0, +1 o -1.
n, m, m1 sono contatori per gli indici delle variabili.
cp significa Count Pulse
D significa Dati, che copiava il totale ogni secondo da DA o da DB, secondo quale sonda fosse selezionata; poi, usando un solo pin di ingresso, DA e DB sono state sostituite da DAB, che è volatile e viene caricata durante l'interrupt.
Tutte le variabili che terminano con una "o" contengono il valore precedente della variabile senza la "o", per rilevare i cambiamenti.
Ti: Tempo impostato.
Alcune variabili, che dichiarai come globali non conoscendo inizialmente la differenza, in realtà potrebbero essere dichiarate localmente, ma non vorrei mettermi a fare modifiche rischiando di fare danni, che potrebbero anche non essere evidenti...
t1...t7, ad esempio, credo che possano tutte essere dichiarate localmente, così come molte altre variabili con nome breve. Proprio alle variabili che vengono usate localmente, in generale, ho dato i nomi più brevi.
Un po' di logica nei nomi c'è... Ad esempio:
E è la lettura dell'encoder, che può valere 0, +1 o -1.
n, m, m1 sono contatori per gli indici delle variabili.
cp significa Count Pulse
D significa Dati, che copiava il totale ogni secondo da DA o da DB, secondo quale sonda fosse selezionata; poi, usando un solo pin di ingresso, DA e DB sono state sostituite da DAB, che è volatile e viene caricata durante l'interrupt.
Tutte le variabili che terminano con una "o" contengono il valore precedente della variabile senza la "o", per rilevare i cambiamenti.
Ti: Tempo impostato.
Ultima modifica di Datman il 08/05/2017, 15:09, modificato 1 volta in totale.
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Io uso nomi lunghi per il semplice fatto che se vado a rivedere il codice dopo tempo magari non ricordo più nulla.
Piuttosto, io ho presente la differenza fra variabili globali e locali ma mi son chiesto se la continua creazione e distruzione di una variabile locale che verrà usata frequentemente, se non sempre, non porti via tempo. Mi riferisco ai microcontrollori. Ci vorrebbe un altro test!
Edit: Ma da GitHub cosa va scaricato? Il master o uno dei branch?
Piuttosto, io ho presente la differenza fra variabili globali e locali ma mi son chiesto se la continua creazione e distruzione di una variabile locale che verrà usata frequentemente, se non sempre, non porti via tempo. Mi riferisco ai microcontrollori. Ci vorrebbe un altro test!
Edit: Ma da GitHub cosa va scaricato? Il master o uno dei branch?
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
La versione 1.8U, che è l'ultima. Il link che ho pubblicato va a quella.
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Prova ad applicare "Trova e Sostituisci" in maniera automatica e vedrai che disastri vengono fuori! Non è così semplice come dici, anzi!Datman ha scritto:Beh... Dove dichiaro le variabili c'è un'ampia spiegazione del loro significato, sicuramente più esplicativa di qualunque nome... Chiunque sia interessato alla comprensione, quindi, può molto semplicemente sostituire i nomi delle variabili come preferisce, anche in maniera automatizzata con Trova e Sostituisci.
Con nomi come quelli che usi, la comprensione va a farsi benedire! Punto.
Vedi cosa conferma anche zoomx: è una delle regole BASILARI della programmazione: non stai usando RPG o Fortran dove c'erano limiti strutturali alla lunghezza del nome della variabile! Di questi tempi la memoria è a dir poco gratuita: non ti costa niente usare nomi più lunghi che siano autosplicativi e rendi la vita più semplice agli altri.
Vedi che ammetti anche tu la farraginosità di ciò che hai scritto? Certo, funziona, ed anche bene, ma non è strutturato e qualsiasi modifica può portare alla caduta del castello di carte.Alcune variabili, che dichiarai come globali non conoscendo inizialmente la differenza, in realtà potrebbero essere dichiarate localmente, ma non vorrei mettermi a fare modifiche rischiando di fare danni, che potrebbero anche non essere evidenti...
No, non porta via tempo: il compilatore ci pensa lui a predisporre le cose in modo che stack pointer e frame pointer puntino fin da subito ai parametri passati ed alle variabili locali. Di norma la parte più dispendiosa del processo è il passagio dei parametri (push) PRIMA della chiamata alla funzione.Piuttosto, io ho presente la differenza fra variabili globali e locali ma mi son chiesto se la continua creazione e distruzione di una variabile locale che verrà usata frequentemente, se non sempre, non porti via tempo. Mi riferisco ai microcontrollori. Ci vorrebbe un altro test!
Ho provato a fare qualche ricerca ma noon ho trovato spiegazioni così semplici della cosa (dipende molto dalla architettura che stai usando):
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
Uno dei migliori sistemi per capire come funziona è di scrivere un piccolissimo programmino (scritto senza controllarne la compilabillità) es:
Codice: [Local Link Removed for Guests]
#include <stdint.h>
uint8_t funzione (uint8_t Parametro1, uint8_t Parametro2)
{
uint8_t VariabileLocale = 3 ;
VariabileLocale = VariabileLocale + Parametro1 + Parametro2 ;
return(VariabileLocale) ;
}
int main()
{
uint8_t ret ;
ret = funzione(1, 3) ;
return(ret) ;
}
Magari (se ti interessa) si può aprire un nuovo thread a riguardo: questo è già stato troppo hijacked
٩(•̮̮̃•̃)۶ - Excusatio non petita, accusatio manifesta
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Si, forse è meglio aprire un argomento apposta.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Ho ripulito e aggiornato lo schema che pubblicai il 25 Dicembre 2016. Mancava il condensatore sul pulsante dell'encoder, che può essere utile per togliere qualche rimbalzo, e la resistenza di 1Mohm in serie alle sonde interne, posta vicino a esse.
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Ho apportato qualche modifica al software per aggiornare la tensione della batteria e l'autonomia residua stimata ogni secondo quando visualizza i valori nella funzione Autonomia. In questo modo è possibile seguire la scarica o la carica della batteria.
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
v.310517
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
v.310517
Ultima modifica di Datman il 03/06/2017, 21:03, modificato 2 volte in totale.
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
- marconmeteo
- Moderatore
- Messaggi: 4336
- Iscritto il: 08/10/2015, 21:20
- Località: Marcon (VE)
- Contatta:
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Grazie per la condivisione Datman.
[External Link Removed for Guests]
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo all'universo ho ancora dei dubbi" - Albert Einstein
IU3ARP
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo all'universo ho ancora dei dubbi" - Albert Einstein
IU3ARP
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Prego
Adesso il tempo è impostabile anche a 5 secondi, oltre che da 10 a 300 a passi di 10. v.030617
Adesso il tempo è impostabile anche a 5 secondi, oltre che da 10 a 300 a passi di 10. v.030617
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Piccolo aggiornamento: il valore massimo di cpm (da cui, poi, vengono calcolati i uSv/h) memorizzato è preso dai valori visualizzati, anziché calcolato dai cps grezzi come in precedenza; inoltre, durante i primi 4 secondi dall'azzeramento i valori vengono ignorati ai fini del massimo per evitare possibili valori erronei molto elevati dovuti all'elevato errore iniziale. v.290617
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]