Ciao a tutti,
nei miei progetti Arduino (e non solo) mi chiedo se ci siano delle controindicazioni nella lettura costante di determinati valori attraverso i sensori e se sia veramente necessaria un'ottimizzazione delle "letture".
Mi spiego meglio con esempi concreti:
Progetto con fotoresistore collegato alla porta analogica. Lo utilizzo per capire se è a contatto con una luce lampeggiante quindi devo leggere più di un valore. Al momento leggo una decina di valori uno dopo l'altro con delay(300) solo quando viene fatta una richiesta esplicita ad Arduino.
Sarebbe ugualmente efficiente se la MCU leggesse continuamente i valori 24 ore al giorno senza mai avere interruzione?
Altri progetti con ad esempio lettura di distanza tramite sensore ad ultrasuoni. Posso permettermi anche in questo caso di leggere il valore continuamente? Ci sarebbero controindicazioni? Il valore di delay tra una lettura e l'altra può anche essere estremamente piccolo?
Inoltre, ci sono delle best practice quando questi valori devono essere anche inviati via web per essere registrati? Io ho creato una funzione che fa una richiesta GET al mio webserver per registrare i valori. Consigli particolari? Posso semplicemente fare una GET ogni minuto ad esempio senza problemi?
quando rispetti i tempi di pausa minimi necessari tra due letture che sono previsti nei datasheet dei vari sensori, poi puoi leggere quante volte vuoi senza problemi.
anche l'invio può essere fatto o a tempi fissi (1 al minuto o 1 ogni ora...) oppure al variare del dato (l'ultimo inviato era 22, fino a che non cambia non invio nulla)
Patrick_M:
quando rispetti i tempi di pausa minimi necessari tra due letture che sono previsti nei datasheet dei vari sensori, poi puoi leggere quante volte vuoi senza problemi.
anche l'invio può essere fatto o a tempi fissi (1 al minuto o 1 ogni ora...) oppure al variare del dato (l'ultimo inviato era 22, fino a che non cambia non invio nulla)
Ok la richiesta al server fatta quando cambia il valore ma le letture del sensore invece non ci sono problemi se fatte spingendosi al massimo? Credevo che i valori dei datasheet fossero un massimo a cui è sconsigliato spingersi ma se non devo pormi problemi di usura o "sovraccarico" è meglio leggere praticamente continuamente e non porsi neanche il problema di ottimizzare giusto?
Un po' più dura capire quanto spingersi in casi come i fotoresistori (cinesi) di cui non ho a disposizione neanche il datasheet. Secondo voi ci sono problemi a fare una lettura ogni mezzo secondo?
assolutamente no, i fotoresistori che sono come delle normali resistenze che però cambiano valore in funzione della luce davvo un valore continuo (analogico ) al pin che usi per ricevere il valore quindi non ci sono controindicazioni di sorta. Nessuno ti vieta di operare in "continuo" con le letture, resta da domandarsi quanto è utile.... la temperatura di una stanza di una 30 di metri cubi non cambia nel giro di pochi secondi quindi fare una lettura ogni minuto o due è più che ragionevole, anche nell'ottica di registrare i dati, che senso ha leggere 3600 dati ogni ora per comandare una valvola termostatica .... Mentre se una applicazione deve leggere il numero di giri di una ventola o di un motorino, necessita di molte letture al secondo per avere dei dati corretti
come ti ho detto il datasheet ti da i tempi minimi di attesa tra due letture (se è necessario)
ad esempio per il sensore di temperatura ed umidita DHT11 della AOSONG il datasheet riporta:
Sampling period: more than 2 seconds
se tu leggi ogni mezzo secondo cosa succede? Nulla, semplicemente per 3 volte otterrai lo stesso valore che non è stato ancora aggiornato dalla nuova lettura :). Altri sensori (librerie) possono non essere così tolleranti e darti dei codici di errore, varia da caso a caso