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á!
Tags:
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;
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por