Muy buenas, yo solia programar en picbasic pro y estaba muy acostumbrado a los goto, quiero hacer un menu scrooll con una flechita en lcd con arduino, que previamente lo hice en basic.
el problema que tengo en arduino es que cuando utilizo el condiconal if, no me entra en un bucle infinito
y cualquier boton que presione se va al menu asignado, son cuatro botones, (menu,arriba, abajo, enter).
cuando pulso menu, sale un menu que hice con la flechita en la opcion 1, pero no quiero que al pulsar abajo se me valla a ese menu, porque primero tiene que entrar a menu y depsues es que yo utilizo abajo para bajar la flechita, pero no se como separar los botones para que cada uno cumpla su funcion en el lugar especifico. dejo el codigo para mas entendimiento. lo que quiero es separar la primera condicion de la segunda, es decir que si estando en el mensaje de inicio, si presiono la flecha abajo no debe hacer nada, solo me debe funcionar la menu la flecha abajo solo debe funcionar cuando entre al menu. entonces como hago para separar esos condicionales. lo he hecho con goto y se va, lo he hecho con subrutinas y nada. por favor lo quiero hacer solo con condicionales, no quiero hacerlo con puerto analogico. el menu es mas largo y con submenus pero solo pongo ese pequeño codigo para q se entienda mas
#include <LiquidCrystal.h>
// definimos los pines para el lcd
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
byte flecha[8] = {B00000, B00100, B00010, B11111, B00010, B00100, B00000,};
int menu=3;// pin 3 sera el boton menu
int arriba=2;// pin 2 sera el boton arriba
int abajo=1;// pin 1 sera el boton abajo
int enter=0;// pin 0 sera el boton enter
void setup() {
lcd.begin(16, 2);// numero de columnas y filas de la lcd
lcd.createChar(0, flecha);
pinMode(menu, INPUT); // pin "menu" como entrada
pinMode(abajo, INPUT); // pin "abajo" como entrada
pinMode(arriba, INPUT); // pin "arriba" como entrada
pinMode(enter, INPUT); // pin "enter" como entrada
delay(500);
lcd.setCursor(4, 0);
lcd.print("LIMPIADOR");
lcd.setCursor(3, 1);
lcd.print("ULTRASONICO");}
void loop(){
if(digitalRead(menu)==true){
delay (150);
lcd.clear();
lcd.setCursor(0, 0); lcd.write(byte (0)); lcd.print("1.ULTRASONIDO");
lcd.setCursor(1, 1); lcd.print("2.TEMPERATURA");}
if(digitalRead(abajo)==true){
delay (150);
lcd.clear();
lcd.setCursor(1, 0); lcd.print("1.ULTRASONIDO");
lcd.setCursor(0, 1); lcd.write(byte (0)); lcd.print("2.TEMPERATURA");}
}