Como eu faço para somar um número com ele mesmo tipo 100 vezes, na verdade eu quero fazer a média dos valores lidos de uma entrada analógica.
Pensei em algo do tipo só que funciona.Segue:
Void setup(){
Serial.begin(9600);
}
void loop(){
for(int i=0;i<100;i++){
int A=10;
A = A+A;
Serial.print(A);
}
}
Esse código é só para terem uma ideia do que eu quero fazer.
Bom, primeiro você precisa que esse número fique "público", para que toda vez que a função loop for ativada, ela não resete o estado da variável.
Não sei se é isso que vc quer, mas dá uma olhada.
unsigned int inc;
//não vou deixar unsigned, pois dependendo da leitura analógica, isso pode ficar negativo.
long todosValores;
//o setup será chamado uma única vez no ciclo de vida do programa,
// logo, podemos inicializar nossa variável aqui.
void setup()
{
Serial.begin(9600);
inc = 0;
todosValores = 0;
}
void loop()
{
//Incrementamos nosso contador, para que ele só faça algo realmente útil à partir de 100 vezes
inc++;
int valorPorta = analogRead(A0); //Lê um valor do pin A0
todosValores+=valorPorta; //adiciona o valor lido em "todosValores"
//Se o inc estiver em 100, imprimimos a média aritmética de todosValores:
if (inc==100)
{
Serial.println(todosValores/100);
delay(700); //aguarda um pouco. Já tive problemas por não esperar a porta serial.
inc = 0; //reseta a variável inc para zero
//Reseta todosValores também. Por mais que erros de overflow de variável são tratados em execução,
//isto é, o número volta para seu valor mínimo quando o valor máximo é alcançado,
//não é interessante para a gente ter nossa variável sofrendo uma alteração tão brusca assim.
// Daí a idéia de zerar essa variável.
todosValores = 0;
}
}
Uma dica:
pense que o loop sempre será executado. Quando vc usa um for, aquela iteração irá ocorrer todas as vezes que seu programa passar pela função loop. Ou seja, sempre. No seu caso, aquele for está fazendo o que o loop é suposto a fazer: rodar n vezes.
eu não testei o código, então pode ser que haja algum erro de digitação.
flwz!