buffer tempo e freq problemi esecuzione sketch

Salve a tutti,
sono nuovo del forum e certamente non sono un esperto di arduino ne tantomeno di programmazione.
Ho fatto un piccolo sketch sul mio arduino 2009 che mi permetta di acquisire dai canali analogici uno streaming di dati nel tempo e conseguentemente farne la fft (devono ancora essere implementati tutti i filtri e le mediature del segnale).
Il mio problema è che usando come buffer un #define NUM_SAMPLES 100 ed un #define FFT_SAMPLES 50 io riesco a far girare il mio sketch ma come aumento le dimensioni di un o o dell'altro da serial monitor non si vede niente come se andasse in overflow.
Sono a chiedervi alcune cose:
-può essere un problema di memoria (e quale in particolare)? Se si come potrei risolvere considerando che il top per me sarebbe avere 4096 campioni?
-Se come penso il mio arduino è un po risicato per quello che voglio, ci sono modi per risolvere (anche modificando qualche circuito sulla basetta)?oppure potrei risolvere con un arduino mega?

Vi allego anche il file per la visione.

Naturalmente so benissimo che il file è un po incasinato e può essere migliorato e perfino che ci sia qualche errore di logica ma non vogliatemene ripeto che non sono esperto.

DARV0VER2.c (5.07 KB)

Il ATmega328 del Arduino UNO ha 2kByte di RAM e il ATmega2560 ne ha 8kByte.
Tutti due non Ti bastano per gestire tanti campioni. Devi usarne un SRAM o FRAM I2C esterna per memorizzare i dati. Anche una schedina SD potrebbe andar bene ma lí i dati vengono organizzati normalmente in file.
Ciao Uwe

Ciao UWEFED,
innanzitutto buon anno e buon anno anche a tutti del forum.
Allora come ti ho detto le mie conoscenze su arduino sono un po scarse per ora e non riesco a capire come mai con 8KByte non posso fare un buffer di 3000 0 4000 campioni; potresti spiegarmelo o potresti darmi un link dove posso leggere qlcs che mi faccia capire?
Secondo
se uso come mi suggerisci una sram o fram I2C dovrei risolvere il problema? l'unico intoppo è il tempo di trasferimento?

Ti Ringrazio ancora della disponibilità

Saluti
Sofistio

Un vettore di 100 integer hai bisogno di 200 celle di memoria, perché ogni valore di tipo integer occupa 2 byte.
Se nel tuo sketch crei più di un vettore e/o sposti i dati in altri vettori per l'elaborazione, il consumo cresce. Considera che nei 2 kB di SRAM ci deve stare anche lo stack del programma, non solo le variabili usate da esso e che il buffer seriale con l'IDE versione 0022/23 occupa 128 byte mentre con l'IDE 1.0 ne occupa 64 (se non mi ricordo male).