He conectado un LCD de 20x4, tres botones con las ATMEGA1280 Arduino.
1.boton cuando se pulsa, el cursor se mueva hacia arriba y seleccione la línea
2.boton cuando se pulsa, el cursor se mueva hacia abajo y seleccione la línea
3. Cuándo se pulsa el 3.boton la cadena contenida en la línea seleccionada como una función ke le llama y ejecute.
Existe una función para eso o tengo que aplicarla de nuevo?
De adelantado les doy las gracias y espero sus comentarios.
Hola
yo creo que tendrás que hacer dos cosas cuando se pulse el 3. botón: selecionar la 3ª línea, y llamar a una función que haga algo. No creo que la línea selecionada pueda llamar a una función.
yo tengo una función que me ha funcionado bien en menus del lcd, la funcion devuelve el boton que se ha pulsado. lo tengo hecho tan solo con 4 botones pero se puede hacer con más o con menos. Espero que te ayude
// la funcion devuelve el boton que se ha pulsado
int botonpulsado()
{
int var=0;
int buttonState1;
int buttonState2;
int buttonState3;
int buttonState4;
buttonState1 = digitalRead(boton1);
delay(100);
while (buttonState1 == HIGH) {
var=1;
buttonState1 = digitalRead(boton1);
delay(100);
}
buttonState2 = digitalRead(boton2);
while (buttonState2 == HIGH) {
var=2;
buttonState1 = digitalRead(boton2);
delay(100);
}
buttonState3 = digitalRead(boton3);
while (buttonState3 == HIGH) {
var=3;
buttonState1 = digitalRead(boton3);
delay(100);
}
buttonState4 = digitalRead(boton4);
while (buttonState4 == HIGH) {
var=4;
buttonState1 = digitalRead(boton4);
delay(100);
}
return var;
}
en la declaracion de variables al principio del programa pongo los pines que voy a utilizar como entradas de los botones
int boton1 = 10;
int boton2 = 11;
int boton3 = 12;
int boton4 = 13;
y luego la forma en que la utilizo ...
switch (botonpulsado()) {
case 1:
i//aqui pones lo que quieres que haga en caso de pulsar 1
delay(100);
break;
case 2:
//aqui pones lo que quieres que haga en caso de pulsar 2
delay(100);
break;
case 3:
//aqui pones lo que quieres que haga en caso de pulsar 3
delay(100);
break;
case 4:
//aqui pones lo que quieres que haga en caso de pulsar 4
delay(100);
break;
//default:
// si nada coincide, ejecuta el "default"
// el "default" es opcional
}