Come da titolo, cerco un modo per velocizzare analogRead e Serial.write().
Un modo per l'analog l'ho visto sul forum, modificando i timer, ma dicono che si può perdere di precisione. Qualche info più dettagliata?
Per quanto riguarda la serial invece non ho trovato nulla, tranne aumentare il baud rate... ma non c'è una via ancora più veloce?
In pratica per motivi di debug dovrei fare un'analogRead e inviare il valore via seriale, dove il pc elaborerà i dati.
ok, stavo pensando, visto che l'output di serial write al massimo arriva a 1024, ovvero 10 bit...
quindi io potrei sfruttare 5 char per scrivere 4 valori, se lavorassi con i bit anziché con char..... (con i char nel caso peggiore 4 valori di 4 cifre = 16byte, normalmente 4 valori*3 cifre=12byte)
poi in realtà il mio input è a 3,3V su un reference di 5V, quindi i valori sono tra 0 e 676... però userei comunque 10 bit a valore (1024) quindi tanto vale portare il reference a 3,3 V così ho una maggiore precisione di lettura...
lascio quest'ultimo pensiero che magari trovate un modo per smentirmi
ciao Lesto
Leggi 10 Bit dalla entrata analogica.
La seriale spedisce un byte ovvero 8bit alla volta.
Una cosa abbastanza veloce é accumulare i dati nella RAM del ATmega e poi spedirli in un secondo momento. La cosa non é facile perché lo sketch usa una quantita poco definita di RAM e devi assicurarti che non riempi tutta la RAM:
Cosa vuoi misurare e con che velocitá vuoi misurare?
le misure arrivano da un sensore giroscopio analogico, e devono essere lette il più velocemente possibile. poi arrivano al PC dove mi sbizzarrisco a trovare un buon algoritmo per "pulire" l'output dei giroscopi, trovato l'algoritmo migliore riporto tutto su arduino..
Si tratta di un software di stabilizzazione di un quadricottero, ho visto in giro ma altri usano solo filtri passa basso.... Invece sarebbe stato interessante usare il DCM ma anche vari tipi di media pesata... (o meglio vari tipi di scelta dei pesi)