Bom dia,

Pessoal, existe alguma maneira de eu criar um "acumulador" no Arduino?

E por acumulador eu quero dizer uma variável que some seu resultado anterior ao seu resultado atual. Por exemplo, no caso de A = 1 e B = 1 e C = A + B, eu gostaria de criar uma variável D que somasse o antigo resultado de C ao atual, algo que, num primeiro momento, resultaria em 2 e, num segundo, deveria resultar em 4.

Há alguma maneira de fazer isso?

Agradeço desde já!

Exibições: 984

Responder esta

Respostas a este tópico

olá  Rennan Oliveira

Não ficou bem claro, mas você já testou assim:

D = 0;

D = D+C;

D = D+D;

É isso que você quer?

Se eu definir D e C como 1 nesse seu exemplo, o resultado vai ser sempre 2, nunca muda.

O que eu estava pensando era: se A = 1 e B = 1 e C inicial for igual a 0...

C = A + B = 1 + 1 = 2, certo?

D = C (inicial) + C (atual) = 0 + 2 = 2.

Num segundo momento, em que o C inicial for 2 e o C atual for 2 novamente, resultará em 4. Num terceiro momento, em que o C inicial for o 4 e somar 2, D vai ser 6. E assim por diante.

Veja bem, pelo que eu entendi D é o acumulador, em nenhum momento você disse que seria atribuído um valor a D. Mas observe que a lógica é a mesma que eu mostrei.

Explique o que você quer, caso contrário fica difícil sugerir alguma coisa, também o entendimento do algoritmo, vai depender de seu conhecimento sobre lógica de programação e sobre a linguagem de programação C.

não entendi como é que D resultaria em 4

mas se não houver "mágica" nenhuma nessa sua operação matemática,  dá pra fazer sim,  qualquer linguagem de programação faz tais tipos de contas

Porque o 1° D seria igual a 0 + 2. O 2° seria igual a 2 + 2, resultando 4. O terceiro seria 4 + 2, resultando 6, e assim por diante.

Mas basicamente o eu queria era que uma variável sempre somasse o valor que fosse lançado. Se eu lançar 1, 3, 7, ela deveria ser igual a 11. Se eu lançar 4, deveria ser igual a 15. Sempre somando, "acumulando", valores, entende?

Galera, eu consegui a solução.

Com essa função, eu consigo fazer com que o valor de D seja sempre somado ao seu valor anterior, incrementando, como no exemplo, de 2 em 2.

int A = 1;
int B = 1;
int C;
int D;

for (int i = 0; i < 100; i++) {
C = A + B;
D = D + C;
i++;
Serial.println(D);
delay(1000);
}

Obrigado a todos!

A variável D deve ser inicializada, pelo menos como boa pratica de programação, não há garantia sobre o valor inicial, pode até somar "lixo".

int D = 0;

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço