Hola Venum.
A ver puedo equivocarme, pero creo que lo estás planteando mal, la conversión o el castig de variables, nunca se hace "hacia abajo" como planteas, se tiene que hacer "hacia arriba", es decir, en lugar de pasar un float a entero para poder compararlo, es mejor pasar el entero a float, porque sino perderías precisión (la parte decimal del float). Lo que tienes que hacer es convertir temp_eeprom a float y así poder comparar las variables sin problema alguno. (Tal y como te comentan mas arriba)
Para hacer el casting por ejemplo puedes hacer esto:
//creas una variable de tipo float
float variable1;
variable1=(float)temp_eeprom; //casting de entero a float.
En la variable1 ya tienes el float para poder compararlo y no perder precision (mucho mejor lo de cucaracha, que ya lo hace todo dentro del if y no define variable auxiliar alguna).
Pero bueno, de todos modos si no te convence lo que te he contado y lo que quieres es solo la parte entera y despreciar los
decimales, es muy facil, por ejemplo, truncando los decimales, como bien te dice Pocher, no tienes ningun problema en
comparar u operar con variables de distinto tipo ya que el compilador hace conversiones implicitas,mira el ejemplo:
Codigo:
#include <16f876.h>
#use delay(clock=4000000)
#include <lcd.c>
void main()
{
int a=2,c;
float b=2.5;
lcd_init();
while(1)
{
lcd_putc("f");
lcd_gotoxy(1,1);
c=a+b; //al hacer la suma se realiza una conversion o casting implicito.
printf(lcd_putc,"%i",c);
delay_ms(1000);
}
}
Fijate que el resultado es 4 (pruebalo ya verás), o sea al hacer la suma y la asignacion, el compilador ya hace una conversión implicita y el resultado es un entero.
Si así no lo ves, quizás se vea mejor con una asignacion directamente, mira si ponemos una variable temporal al codigo de
antes:
Codigo:
#include <16f876.h>
#use delay(clock=4000000)
#include <lcd.c>
void main()
{
int a=2,c,temp;
float b=2.5;
lcd_init();
while(1)
{
lcd_putc("f");
lcd_gotoxy(1,1);
temp=b; //casting en la asignacion... se pierde precision
c=a+temp;
printf(lcd_putc,"%i",c);
delay_ms(1000);
}
}
Es facil no?.
En cuanto a lo que me preguntas del código del sht11, bueno, solo tienes que recordar como se accede a cada miembro de una estructura.
Te lo resumo muchisiiiimo, en el código se va a hacer una conversión de entero a float, entonces se crea una estructura con
dos miembros, uno entero y otro float (sabes que para acceder al miembro de una estructura se utiliza el operador punto) entonces para hacer la conversión accede al miembro entero de la estructura " (float)temperatura.i " y una vez hecho el casting (o conversion ) se le asigna al miembro float de la estructura " temperatura.f " , no es más que una conversión de tipos de datos, pero para tenerlo "recogidito" lo hace con los miembros de una estructura en lugar de tener dos variables cualquieras sueltas por "ahí". Supongo que "máomeno" me habrás pillao no?. Buffff a veces me "enrollo" de una manera.... perdonar la extensión del mensaje.....
Un saludo y suerte, ese terrario te va a quedar de aúpa.