No es posible llamar a una función con parámetros utilizando ArduinoMenu.
Estoy intentando imprimir valores cuando se utiliza la macro Toggle de neu-rah/ArduinoMenu.
Si no uso ningún parámetro de entrada, funciona como debería:
void storeConfigValue(){
Serial.println("");
Serial.println("-------------");
Serial.println("valor de config:");
}
TOGGLE(conf, Config, "Config ", doNothing, noEvent, wrapStyle
, VALUE("1x pre", HIGH, storeConfigValue,noEvent)
, VALUE("2x pre", LOW, storeConfigValue,noEvent)
);
Pero cuando intento pasar un parámetro, da error:
“void” no se ignora como debería
El código de error es el siguiente:
void storeConfigValue(uint8_t a){
Serial.println("");
Serial.println("-------------");
Serial.println("valor de config:");
Serial.println(a);
}
TOGGLE(conf, Config, "Config ", doNothing, noEvent, wrapStyle
, VALUE("val1", HIGH, storeConfigValue(1),noEvent)
, VALUE("val2", LOW, storeConfigValue(2),noEvent)
);
¿Podrías sugerir una corrección por favor?
davy.ai
El problema en el código es que la llamada a la función
storeConfigValue(1)
ystoreConfigValue(2)
se está ejecutando durante la creación del menú en lugar de ser desencadenada por la acción del interruptor. Para solucionar este problema, puedes utilizar funciones lambda para retrasar la ejecución de las llamadas a la función.Aquí tienes un fragmento de código actualizado:
En este código, en lugar de llamar directamente a la función
storeConfigValue
, utilizamos una función lambda[]{storeConfigValue(1);}
y[]{storeConfigValue(2);}
para retrasar la ejecución de las llamadas a la función hasta que se active la acción del interruptor.