Tengo, como parte de un sketch, dos grupos de 4 variables booleanas (ChA, ChB, ChC y ChD) (RdA, RdB, RdC y RdD) que van tomando, durante el trascurso del programa valores de "true" o "false".
En determinado momento necesito comparar cuantas están en "true" y cuantas en "false" entre las de un grupo y las del otro.
Hecho con sentencias "if" quedaría algo así y funciona correctamente.
if (ChA == true && ChB == false && ChC == false && ChD == false) { // 4 sentencias para detectar un "true" en el primer grupo
ChCount = 1;
}
if (ChA == false && ChB == true && ChC == false && ChD == false) {
ChCount = 1;
}
if (ChA == false && ChB == false && ChC == true && ChD == false) {
ChCount = 1;
}
if (ChA == false && ChB == false && ChC == false && ChD == true) {
ChCount = 1;
}
if (ChA == true && ChB == true && ChC == false && ChD == false) { // 6 sentencias para detectar dos "true" en el primer grupo
ChCount = 2;
}
if (ChA == true && ChB == false && ChC == true && ChD == false) {
ChCount = 2;
}
// etc, etc......
if (ChA == true && ChB == true && ChC == true && ChD == false) { // otras 4 para detectar tres "true"
ChCount = 3;
}
if (ChA == true && ChB == true && ChC == false && ChD == true) {
ChCount = 3;
}
// etc, etc.....
if (ChA == true && ChB == true && ChC == true && ChD == true) { // finalmente una sentencia para detectar cuatro "true"
ChCount = 4;
}
if (RdA == true && RdB == false && RdC == false && RdD == false) { // todo similar para el segundo grupo
RdCount = 1;
}
// etc, etc............
if (ChCount != 0 && RdCount == 0) { // para finalmente comparar ChCount con RdCount
digitalWrite (ChPin, HIGH);
}
if (ChCount == RdCount) {
digitalWrite (ChPin, LOW);
}
Lo que implica 30 sentencias "if"
Podría resolverlo de alguna manera con menos líneas de código?