Autor Tema: MENU EN PIC C COMPILER  (Leído 564 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Richarlison

  • PIC10
  • *
  • Mensajes: 3
MENU EN PIC C COMPILER
« en: 15 de Enero de 2023, 17:29:36 »
Buenas tardes colegas, hice este menu en pic c compiler, al probarlo fisicamente y en simulacion, si entra en las opciones pero yo quiero que se quede dentro de la opcion hasta que presione un boton y en la misma LCD 20x4 abajo salga "Regresar" (uso 3 botones , entrar, arriba y abajo) ya que regresa inmediatamente, alguien podria decirme como hacerle? de ante mano muchas gracias.
Este es el codigo

float V=0;
int B=1;

void main()
{
   setup_adc_ports(0000);//AN0=0 parra el voltaje
   lcd_init(0x4E,20,4);
do
{
if (!input(pin_B2)==0)//B2 aBAJO
{
B--;
delay_ms(10);
}
if(!input(pin_B4)==0) //B4 abajo
{
B++;
delay_ms(10);
}

if(B>4)
{
B=1;
}

//aqui comienz la seleccion del menu//
if(B==1)
{
printf(lcd_putc,"\f");
printf(lcd_putc,"opcion1<=");
lcd_gotoxy(1,2);
printf(lcd_putc,"opcion2");
lcd_gotoxy(21,1);
printf(lcd_putc," opcion3");
lcd_gotoxy(21,2);
printf(lcd_putc," opcion4");
delay_ms(200);

//este es el tercer boton para seleccionar//y en el cual se ejecuta lo elegido//
if(!input(pin_B3)==0) //B3 entrar
{
//datos aqui
printf(lcd_putc,"\f");

}

}

if(B==2)
{
printf(lcd_putc,"\f");
printf(lcd_putc,"opcion1");
lcd_gotoxy(1,2);
printf(lcd_putc,"opcion2<=");
lcd_gotoxy(21,1);
printf(lcd_putc," opcion3");
lcd_gotoxy(21,2);
printf(lcd_putc," opcion4");
delay_ms(200);

//este es el tercer boton para seleccionar//y en el cual se ejecuta lo elegido//
if(!input(pin_B2)==0) //B2
{
//datos aqui
printf(lcd_putc,"\f");
       
}

}

if(B==3)
{
printf(lcd_putc,"\f");
printf(lcd_putc,"opcion1");
lcd_gotoxy(1,2);
printf(lcd_putc,"opcion2");
lcd_gotoxy(21,1);
printf(lcd_putc," opcion3<=");
lcd_gotoxy(21,2);
printf(lcd_putc," opcion4");
delay_ms(200);

//este es el tercer boton para seleccionar//y en el cual se ejecuta lo elegido//
if(!input(pin_B2)==0)//B2
{
//datos aqui
printf(lcd_putc,"\f");
}

}

if(B==4)
{
printf(lcd_putc,"\f");
printf(lcd_putc,"opcion1");
lcd_gotoxy(1,2);
printf(lcd_putc,"opcion2");
lcd_gotoxy(21,1);
printf(lcd_putc," opcion3");
lcd_gotoxy(21,2);
printf(lcd_putc," opcion4<=");
delay_ms(200);

//este es el tercer boton para seleccionar//y en el cual se ejecuta lo elegido//
if(!input(pin_B2)==0) //B2
{
//datos aqui
printf(lcd_putc,"\f");
}

}

}while(TRUE);
}
float voltimetro()
{
   int16 VIN;
   //float V;
   set_adc_channel(0);//Habilita canal 0
   delay_us(20);
   //lcd_gotoxy(2, 1);
   VIN = read_adc();//Lee canal 0
   V = (5*VIN/1023.0);//Conversion de binario a Volt
 
 
   return V;
}

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:MENU EN PIC C COMPILER
« Respuesta #1 en: 15 de Enero de 2023, 18:32:40 »
...pero yo quiero que se quede dentro de la opcion hasta que presione un boton y en la misma LCD 20x4 abajo salga "Regresar" (uso 3 botones , entrar, arriba y abajo) ya que regresa inmediatamente, alguien podria decirme como hacerle?

Donde tenés escrito "//datos aqui"  llamás a un subprograma que haga lo que corresponda y tenga su propio loop , del cual se sale (y se retorna) con un pulsador.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 571
Re:MENU EN PIC C COMPILER
« Respuesta #2 en: 15 de Enero de 2023, 20:04:34 »
Hola, básicamente yo utilizo una variable que según el menú o submenú, tiene un valor dado. Entonces todos los parámetros y pantallas dependen de ese valor.

Desconectado Richarlison

  • PIC10
  • *
  • Mensajes: 3
Re:MENU EN PIC C COMPILER
« Respuesta #3 en: 16 de Enero de 2023, 13:25:24 »
Algo que se me ocurre es algo así

void boton (){
if(!input(pin_B3)==0) //B3 si se vuelve a prresionar regresa
{
printf(lcd_putc,"\f");
printf(lcd_putc, "Regresar al menú");
}
}

y ya solo lo que haría es mandarlo a llamar en mis funciones, un ejemplo:

//aqui comienz la seleccion del menu//
if(B==1)
{
printf(lcd_putc,"\f");
printf(lcd_putc,"VOLTAJE<=");
lcd_gotoxy(1,2);
printf(lcd_putc,"CORRIENTE");
lcd_gotoxy(21,1);
printf(lcd_putc," OHMS");
lcd_gotoxy(21,2);
printf(lcd_putc," TEMPERATURA");
delay_ms(200);

//entro a la opcion
if(!input(pin_B3)==0) //B3 entrar
{
printf(lcd_putc,"\f");
V = voltimetro();
volmetro(V);
a=botonR();
}

}

Estare bien? agradecediria que me ayuden en verdad porque no me queda hace dias :c