Disculpen, refresque la pagina y se envio y no habia terminado, aqui esta el mensaje bien:
Hola a todo el foro de TODOPIC, le comento en que estoy trabajando. Estoy haciendo un termostato, que funciona de la siguiente manera: al presionar un pulsador, me permite a traves de un potenciometro setear la temperatura; a parte, cada 100ms voy leyendo la temperatura ambiente mediante el sensor LM35, la idea es que si la tempertatura supera cierto rango se prende un enfriador, y si decae se prende un calentador.
Ejemplo:
-Temp seteada: 20.0 °C -> Temp medida: 23.0°C => Prender Enfriador, hasta llegar a 20.0°C
-Temp seteada: 20.0 °C -> Temp medida: 17.0°C => Prender Calentador, hasta llegar a 20.0°C
-Temp seteada: 20.0 °C -> Temp medida: 21.0°C => No hace nada
Bueno el problema se presenta, en lo siguiente, yo quiero que la temperatura y el seteo con el potenciometro se haga en saltos de 0,5°C, es decir, al aumentar la temperatura o girar el potenciometro para setear, no muestre todo el recorrido, si no mas bien, saltos de 0,5°C.
Estuve tratando varias formas de hacerlo, por ejemplo con con round(), pero no me dio resultados. Por eso les pido ayuda, alguno sabe alguna manera de realizar eso?
Estoy programando con el PIC16F1519, con MPLAB X IDE y con XC8:
Les dejo la parte de como estoy muestreando en este momento: (muestra todos los valores)
LCD_setCursor(0,0);
LCD_print(" Setear Temp ");
sprintf(vector_set," Temp: %.1f C ",temp_set);
LCD_setCursor(0,1);
LCD_print(vector_set);
El valor de temp_set, viene de aqui:
ADCON0 = 0x01; //Lectura del Canal 0
ADCON1 = 0x80;
ADCON0bits.GO_nDONE = 1; //Iniciamos Conversion
while(ADCON0bits.GO_nDONE == 1){}
ADC_set = ((ADRESH<<8) + ADRESL);
return ADC_set;
//Para convertir de Valor ADC a Temperatura
temp_set = set_up();
temp_set = temp_set*30.0/1023.0; //0v -> 0°C / 5v -> 30°C
Si a alguien se le ocurre alguna manera y me la puede compartir, se lo agradezco. Si necesitan mas info, me consultan. Saludos