Memoria finita?

Ciao

Sono ai primi passi.
Ho creato uno sketch che legge il segnale del TMP36 del kit sul pin analogico e restituisce la media dei valori.

Se aumento il numero di campioni (variabile camp) oltre i 450 arduino si resetta in continuazione.

Ho provato anche a lasciargli piu tempo col delay all’interno del for ma nulla
Sono arrivato a tappo con la memoria?

  int camp=400; //numero campioni
  int N=0;
  float temp=0;
  float array[camp];
  
  for(N=0;N<=camp-1;N++)
  {
    array[N]=((analogRead(tempin)/1024.0*5)-0.5)*100;
    delay(10);
 
  temp=temp+array[N];
  }
  
  temp=(temp/camp);

Arduino UNO (... immagino tu abbia quello) ha solo 2 KBytes di memoria SRAM. Ogni variabile float occupa 4 bytes ... fai due conti e risponditi da solo :grin: :grin: :grin:

Guglielmo

Come sospettavo, è tutto un complotto... XD

Grazie!

Non c'entra con il problema, ma guardando il calcolo, io metterei anche il *5 come *5.0

Così ottieni lo stesso risultato ma senza il vettore.

 int camp = 400; //numero campioni

  unsigned long somma = 0;
  for (int N = 0; N < camp; N++)
  {
    somma += analogRead(tempin);
    delay(10);
  }
  float temp = (((5.0 * (float)somma / (float)camp) / 1024) - 0.5) * 100;

Anche io non credo che sia necessario memorizzare tutti i valori letti per fare una media.

, è tutto un complotto...

non é niente un complotto

se vuoi occupare 450 * 4 Bytes (1800) in un sistema che ha solo 2048 byte RAM avrai problemi. Ciao Uwe