Tras 4 horas de romperme la cabeza ...

... he descubierto que:

void Menu_Agua_ControlBotonAgua(bool Estado)
{
if (Estado!=Agua_Manual) // Si el estado ha variado
{
Agua_Manual=Estado; // Nuevo valor
MenuAgua.Estado[1]=Agua_Manual; // Cambiar estado boton menu agua
PintaBotones(MenuAgua); // Refrescar menu agua en pantalla
}
}

no es lo mismo que:

void Menu_Agua_ControlBotonAgua(bool Estado)
{
if (Estado=!Agua_Manual) // Si el estado ha variado
{
Agua_Manual=Estado; // Nuevo valor
MenuAgua.Estado[1]=Agua_Manual; // Cambiar estado boton menu agua
PintaBotones(MenuAgua); // Refrescar menu agua en pantalla
}
}

Doy permiso para reirse :blush:

yo un dia pasando un sketch de 2560 a DUE y no me iba un comparador, del string introducido....

no es lo mismo...

char *introducida = " ";

que

char introducida[] = " ";

para 2560 si, para DUE... no... jajaja

Si yo os contara o contase . . . . .