vi sottopongo questa mia necessità, vorrei risolverla con Arduino Uno in mio possesso.
Ho realizzato un circuito alimentato con i 5V di Arduino che mi realizza in uscita un onda quadra; in pratica mi mantiene a +5V l'uscita per 0.5 secondi e la mantiene bassa per ulteriori 0.5 secondi, così ciclicamente. Ecco questi 0.5 secondi sono stati calcolati con alcune semplici formule.
Il mio intento ora è quello di verificare con Arduino che questi 0.5 secondi siano reali. Vorrei che, attraverso scrittura seriale Arduino mi dica il tempo in cui il segnale in lettura digitale risulta HIGH e quanto tempo LOW-
Sapete darmi qualche indicazione? Se è possibile..
Nono.. per generare l'onda quadra uso un piccolo circuito realizzato su breadboard con l'utilizzo dell'integrato NE555. Se avessi usato Arduino per generare l'onda quadra avrei conosciuto con esattezza i tempi stessi dell'onda..
comunque, per misurare l'intervallo tra HIGH e LOW devi controllare il pin che ti interessa e segnarti in una variabile il valore di millis(). poi verifichi quando torna LOW e per differenza calcoli il tempo.
butta giù qualche riga di codice e vediamo cosa ne esce.
Ecco quello che sono riuscito a partorire nel mio piccolo, con questo codice riesco effettivamente a "vedere" attraverso stampa seriale i tempi della fase High e Low. Avete consigli per leggere direttamente la durata degli eventi high e low senza fare la differenza dei millisecondi? o altri consigli?
Allego codice e stampa seriale..
int Tempo=0;
int Lettura=0;
void setup() {
Serial.begin (9600);
pinMode (8, INPUT);
}
void loop() {
Lettura = digitalRead(8);
Tempo = millis();
if (Lettura == HIGH) {
Serial.print ("T_On=");
Serial.println (Tempo);
}
if (Lettura == LOW){
Serial.print ("T_Off=");
Serial.println (Tempo);
}
}
Ciao, caricato il programma su arduino e collegato il mio circuitino, funziona tutto alla grande.
Questo è il risultato che ottengo dalla lettura seriale:
direi di sì, devi solo cambiare un po' la struttura del programma...
prevedi un contatore per Ton e uno per Toff che vai ad incrementare ogni volta che cambia lo stato.
ovviamente adesso usi il millis() per misurare i 60 secondi invece di misurare il cambio di stato.
Bello a dirsi, ma con la poca esperienza che ho, mi diventa difficile. Proverò a studiare un pò questo contatore.. chiederò consiglio poi sempre qui nel forum. Grazie a tutti per il momento..
Buonasera a tutti, oggi ho ricollegato Arduino per monitorare ancora i risultati e ho avuto una sorpresa..con il programma consigliatomi da @docsavage, se fino a ieri il programma mi restituiva esattamente i risultati con una formattazione del testo coerente, come da post precedente. Oggi mi fornisce una serie di numeri che non comprendo..:
@docsavage Ciao, no non è cambiato niente sul mio circuitino dalla prima volta, in cui il programma di arduino mi restituiva valori verosimili alla realtà. Sul mio circuitino ce' sempre stato un led che lampeggia. Lampeggio che è generato dal 555. Il lampeggio è sempre quello, ma arduino ieri nella breve pausa da un cambio di stato e l'altro, mi segnava nella stampa seriale T_Off=0 ; T_On=1 e al cambio di stato vero e propio tempi simili a quelli del "giorno prima".
Non ci può essere qualcosa che va in conflitto nel programma?
Aggiornamento serale. Ho inserito una resistenza di pull down da 10KOhm, e il programma esegue esattamente le operazioni che mi aspettavo correttamente. Convinto di aver trovato la soluzione, ho provato a comunicazione seriale aperta, a rimuovere la resistenza. E non è cambiato nulla. Bah..
Mistero. Direi che per il momento è tutto. Ringrazio tutti gli intervenuti.. mi avete aperto importanti spunti che saranno degni di approfondimenti. Per il momento è tutto..