hola! tengo un pequeño problema y ojalá me puedan ayudar,estoy haciendo un menú para una pantalla lcd de 16x2,tengo 4 pulsadores que son: Arriba,Enter,Abajo y Volver,el menú es así:
escoja opciones:
living
dormitorio1
dormitorio2
hall , luego al presionar enter puedo acceder a cualquier lugar de la casa,por ejemplo si entro a living me sale:
La temperatura del living es:
21.5ºC....y así sucesivamente con los demás lugares de la casa.
Ya,acá viene mi problema cuando veo la Tº del living por ejemplo necesito despues salir y volver al menu principal presionando el boton Volver,pero no logro volver,se queda pegado en la Tº.
Ahora adjunto una parte del código para que vean con mas claridad,yo creo que el Do-While es el problema,pero no se como salir de ahi por medio del pulsador.
void main(){
.
.
.
//acá va el boton que va hacia arriba.//
//este es el Enter
if (Button(&PORTD,1,120,0))
{
switch(a){
case 1:a=1;b=1;lcd_cmd(_lcd_clear);Lcd_Out(1,1,"La Temp.living es:");
Lcd_Chr(2,9,223);Lcd_Chr(2,8,'C');
do {
//lectura de la Tº, en el puerto RA5.
Ow_Reset(&PORTA, 5); // Onewire reset signal
Ow_Write(&PORTA, 5, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTA, 5, 0x44); // Issue command CONVERT_T
Delay_ms(400);
Ow_Reset(&PORTA, 5);
Ow_Write(&PORTA, 5, 0xCC); // SKIP_ROM
Ow_Write(&PORTA, 5, 0xBE); // READ_SCRATCHPAD
temp_value = Ow_Read(&PORTA, 5); //lectura byte 0.
temp_value = (Ow_Read(&PORTA, 5) << 8) + temp_value;
Display_Temperature(temp_value); //lo que se ve en el lcd
//delay_ms(5000);
} while (a!=2);
break;
// acá vienen mas Case para el resto de las habitaciones.
}
}
//acá está el pulsador que va hacia abajo//
if (Button(&PORTD,3,120,0)) este es el boton que presiono para volver al menu principal
{
switch(a){
case 1:b=1;//a=1;
lcd_cmd(_lcd_clear);lcd_out(2,1,op1);break; op1:living.
case 2:b=2;
lcd_cmd(_lcd_clear);lcd_out(2,1,op2);break; op2:dormitorio1.....
case 3:
lcd_cmd(_lcd_clear);lcd_out(2,1,op3);break;
case 4:
lcd_cmd(_lcd_clear);lcd_out(2,1,op4);break;
}
}
}
Ojalá se entienda Gracias!
escoja opciones:
living
dormitorio1
dormitorio2
hall , luego al presionar enter puedo acceder a cualquier lugar de la casa,por ejemplo si entro a living me sale:
La temperatura del living es:
21.5ºC....y así sucesivamente con los demás lugares de la casa.
Ya,acá viene mi problema cuando veo la Tº del living por ejemplo necesito despues salir y volver al menu principal presionando el boton Volver,pero no logro volver,se queda pegado en la Tº.
Ahora adjunto una parte del código para que vean con mas claridad,yo creo que el Do-While es el problema,pero no se como salir de ahi por medio del pulsador.
void main(){
.
.
.
//acá va el boton que va hacia arriba.//
//este es el Enter
if (Button(&PORTD,1,120,0))
{
switch(a){
case 1:a=1;b=1;lcd_cmd(_lcd_clear);Lcd_Out(1,1,"La Temp.living es:");
Lcd_Chr(2,9,223);Lcd_Chr(2,8,'C');
do {
//lectura de la Tº, en el puerto RA5.
Ow_Reset(&PORTA, 5); // Onewire reset signal
Ow_Write(&PORTA, 5, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTA, 5, 0x44); // Issue command CONVERT_T
Delay_ms(400);
Ow_Reset(&PORTA, 5);
Ow_Write(&PORTA, 5, 0xCC); // SKIP_ROM
Ow_Write(&PORTA, 5, 0xBE); // READ_SCRATCHPAD
temp_value = Ow_Read(&PORTA, 5); //lectura byte 0.
temp_value = (Ow_Read(&PORTA, 5) << 8) + temp_value;
Display_Temperature(temp_value); //lo que se ve en el lcd
//delay_ms(5000);
} while (a!=2);
break;
// acá vienen mas Case para el resto de las habitaciones.
}
}
//acá está el pulsador que va hacia abajo//
if (Button(&PORTD,3,120,0)) este es el boton que presiono para volver al menu principal
{
switch(a){
case 1:b=1;//a=1;
lcd_cmd(_lcd_clear);lcd_out(2,1,op1);break; op1:living.
case 2:b=2;
lcd_cmd(_lcd_clear);lcd_out(2,1,op2);break; op2:dormitorio1.....
case 3:
lcd_cmd(_lcd_clear);lcd_out(2,1,op3);break;
case 4:
lcd_cmd(_lcd_clear);lcd_out(2,1,op4);break;
}
}
}
Ojalá se entienda Gracias!