Hola de nuevo, hoy os escribo porque me pasa algo que no alcanzo a entender y seguro que es una tontería pero llevo media tarde con esto y no sé ni como buscar lo que me pasa en Google.
Para ponernos en situación, he creado una función con varios parámetros, todos se pasan correctamente salvo dos, que en vez de pasar el valor de la variable me pasa ¿La posición ?. Es decir, si ne la función pongo primero atrás y luego siguiente, atrás me vale 2 y siguiente 3, y si lo pongo al revés siguiente me vale 2 y atrás 3. Nunca ne mi vida me había pasado algo parecido y no tiene sentido ninguno, no me llego a imaginar qué está pasando.
Os paso el código a ver si veis el error o qué hago mal o qué puede ser lo que sea que me esté pasando.
char Menu_texto(char cad_1[21], char cad_2[], unsigned int *menu, int maximo, int siguiente, int atras){
Imprimir(cad_1, cad_2, 0);
char key;
while(!(key=='*' || key=='#' || (key> 48 && key<(58-(10-maximo))))){ //Mientras no le demos al teclado un valor válido, Ponemos (58-(10-maximo)) para acotar la entrada
key = keypad.getKey();
}
switch (key) {
case '*':
*menu=siguiente;
lcd.setCursor(0,2);
lcd.print("Siguiente");
delay(300);
break;
case '#':
*menu=atras;
lcd.setCursor(0,2);
lcd.print("Atras");
delay(300);
break;
default:
*menu=key-48;
lcd.setCursor(0,2);
lcd.print(*menu, DEC);
delay(300);
}
lcd.setCursor(0,2);
lcd.print(*menu,DEC);
delay(300);
return key;
}
void setup() {
lcd.begin(20,4); // Indicamos al micro el n�mero de filas y columnas del display
lcd.display();
}
void loop() {
unsigned int menu;
char key=1;
switch (menu) {
case 1:
Menu_texto("Menu principal", "1)Prog. sec.", &menu,3,'51',8);
lcd.setCursor(1,2);
lcd.print(menu,DEC);
delay(300);
break;
case 2:
Menu_texto("Menu principal", "2)Secuencuas", &menu,3,3,1);
break;
default:
Menu_texto("Menu principal", "1)Prog. sec.", &menu,3,3,2);
}
if (menu>=10){
}
}
Muchas gracias a todos de antemano y feliz navidad !