Mostrar las 5 variables deslizándose me parece la manera mas ilegible de presentar las lecturas. Con un texto va bien, pero con esto no.
En mi opinión, si no hay lugar en el display primero hay que sacar todo lo redundante.
Por ejemplo, en lugar de en cada lectura poner la leyenda "Pn:xx.xKg" , volar la 'P' y las unidades, porque con escribirlas una sola vez basta. De esa manera, no solo entra todo sino que te permite mas dígitos.
Algo así:
void pesando(void){
for(int8 k=1 , fila=3 , columna=1 ; k<=5 ; k++ , fila++){
lcd_gotoxy(4,2) ;
switch(unidad){ // unidad: 1,2 o 3
case 1: printf(lcd_putc, "[g] ") ; break ;
case 2: printf(lcd_putc, "[Kg]") ; break ;
case 3: printf(lcd_putc, "[oz]") ;
}
if(k==3){ fila=2 ; columna=12 ; }
lcd_gotoxy(columna,fila) ;
printf(lcd_putc, "%1u:" , k);
float peso ;
switch(unidad){
case 1:
peso = get_units(10,k);
printf(lcd_putc,"%6.2f",peso) ;
break ;
case 2:
peso = get_units(10,k)/1000.0 ;
printf(lcd_putc,"%6.3f",peso) ;
break ;
case 3:
peso = get_units(10,k)/28.35 ;
printf(lcd_putc,"%6.3f",peso) ;
}
}
}
Mostrar las 5 variables es solamente una llamada:
pesando() ; // muestra los 5 pesos