Hola a todos.
Me llamo Alvaro y soy nuevo en el foro.
He encontrado una solución a mi problema y la expongo aquí para compartirla por si a alguien le es de utilidad o puede ser mejorada.
Para mi proyecto necesitaba calcular que entradas de arduino estaban activas, y compararlas con una estructura para asociar a esa combinación un funcionamiento.
considerando 0 la primera entrada y 7 la ultima ( en mi proyecto uso otras para dejar libre el puerto serial) podemos hacerlo sumando 2 elevado al numero de entrada si esta esta activa, si no pues que no sume nada.
Como no funcionaba he aislado la función y he generado un pequeño bucle para comprobar que fallaba.
void setup(){
Serial.begin(300); // comunicacion serial
}
void loop(){
unsigned int suma =0;
for (int a=7; a >= 0; a--) {
suma =(pow ((2),a));//me dice el numero que sumaria por cada pulsador
Serial.print(suma);//lo imprime
Serial.print("\t");//esto es un tabulador entre valores
}
Serial.println();
}
El resultado de esto en el serial es la primera foto adjunta
127 63 31 15 7 3 2 1
Como se ve no es la suma de numeros que esperaba.
Cambiando a Suma el tipo de numero a float obtengo el resultado deseado(segundo archivo adjunto).
128 64 32 16 8 4 2 1
No obstante agradecería que alguien me escribiera una explicación exacta y racional de por que sucede este tipo de calculo, imagino que se deberá a algún tipo de desbordamiento del tipo int, pero no lo logro entender.
Muchas gracias.

