Autor Tema: Ayuda con el redondeo en proyecto sensor de temperaturas  (Leído 1874 veces)

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

Desconectado FrancoMP

  • PIC10
  • *
  • Mensajes: 3
Ayuda con el redondeo en proyecto sensor de temperaturas
« en: 02 de Junio de 2020, 17:20:49 »
Buen día
Les cuento que estoy realizando un trabajo que me puse como proyecto personal y son mis comienzos en la programación de lenguaje C.
Hasta ahora logré mostrar en mi lcd el valor de temperatura tomada... pero no puedo lograr que avance como yo quiero, si muestra decimales pero no hace lo siguiente que es mi problema:
Quisiera que en el caso de que el valor termine en:
.1 y.2 ------->Redondee para abajo
.3 hasta .7-->Redondee a .5
.8 y.9-------->Redondee para arriba
Utilizo el snap PIC16F1519,con compilador XC8 y en MPLAB x IDE.
Si alguien sabe de alguna forma de hacerlo estaria agradecido, si necesitan saber algo más del código me preguntan.
Lo que hago para leer la temperatura es:
Código: C
  1. float Sensor (void)             //Lectura del sensor y transformación a temperatura.
  2. {
  3.     ADCON0 = 0X05;                        //Habilitación adc y establecida entrada en AN1(RA1)
  4.     ADCON0bits.GO_nDONE = 1;                    //Comienzo detección de AD
  5.     while(ADCON0bits.GO_nDONE == 1);{}
  6.     int valorsensor = (ADRESL +(ADRESH <<8));  
  7.     float valorcalculado = (valorsensor*5/(float)1023);     //Cálculo de voltaje
  8.     float valortemp = valorcalculado*100;                   //Cálculo temperatura
  9.     return valortemp;
  10.     ADCON0 = 0;
  11. }
Muchas gracias!
« Última modificación: 02 de Junio de 2020, 17:23:29 por FrancoMP »

Desconectado FrancoMP

  • PIC10
  • *
  • Mensajes: 3
Re:Ayuda con el redondeo en proyecto sensor de temperaturas
« Respuesta #1 en: 02 de Junio de 2020, 17:22:51 »
Ah lo olvidaba, utilizé el sensor LM35 que me pareció el mejor debido a que es muy común y capta gran rango de valores. Ademas con conexión para medir solo valores positivos de temperatura

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con el redondeo en proyecto sensor de temperaturas
« Respuesta #2 en: 02 de Junio de 2020, 18:32:58 »
Creo que el primer intento que deberias haber realizado es preguntar si es menor a 0.3, o mayor a 0.8.

valortemp supongamos que tiene 12.4 , de alguna forma necesito separar la parte entera de la decimal.

Código: C
  1. int temp = valortemp; //temp va a ser igual a 12
  2. float diferencia = valortemp - temp;  // 12.4 - 12 = 0.4
  3. valortemp = temp;  // valortemp = 12;
  4. if (diferencia >= 0.8 ) valortemp+=1; return;  // Supero entonces le sumo 1. Final valortemp=13
  5. if (diferencia >= 0.3 ) valortemp+=0.5; return; // Es menor a 0.8 y mayor de 0.3, entonces solo le sumo 0.5. Final valortemp=12.5
  6. return; // No paso nada! Final valortemp=12


 

anything