vetor

boas,

alguém me poderia explicar porque quando declaro um vetor com 300 posicões com o valor 1 e se for imprimir o conteudo do vetor os primeiros valores não tem haver com os valores armazenados. O mesmo não se passa se declarasse um vetor de 200 posicões:

este foi o código que utilizei para o arduino due:

float data[300] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

void setup() {

//iniciar comunicação serie  
Serial.begin(9600);

for(int i = 0; i < 300; i++)
{
  
 Serial.println(data3[i]); 
 
}

}

void loop() {


  
}

Saída do progama para os primeros números:

1.
** ?jL ?j**
1.00
1.0ÿ1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
(...)

se fosse usado um vetor de 200 posições a saída é:

1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
(...)

Alguma ideia?

Ok presumo que isso seja apenas para entenderes um array e nao para uma aplicaçao pratica.

for(int i = 0; i < 300; i++)
{

Serial.println(data3*);*

}[/quote]
Em cima declaras um array com 300 floats :fearful: chamado data mas depois no teu ciclo for imprimes um data3.Quem é este data3??
Outra questao é que o teu for deve ir de 0 a 299 e nao a 300.Lembra-te que a posiçao 0 do array tambem conta.
Outra coisa a ter em conta é que um float sao 4 bytes.Se queres um array com 300 elementos ocupas 1200 bytes de Ram ...

o erro estava no ciclo for que deveria ir de 0 a 299.

obrigado pela resposta!

HugoPT:
Outra coisa a ter em conta é que um float sao 4 bytes.Se queres um array com 300 elementos ocupas 1200 bytes de Ram ...

[sarcasm]Não faz mal... a memória é infinita![/sarcasm]