Go Down

Topic: Precisión lectura Analoga (Read 546 times) previous topic - next topic

victorhugofasanando

hola amigos, espero que estén  bien.

Estoy realizando un proyecto que consta de leer un sensor de temperatura  por la entrada análoga de un arduino nano, y visualizarlo en un display LCD 16x2.

Bueno, en si ya todo funciona muy bien.

la lectura del  sensor se  guarda en un valor int

int temperatura  =0;

lo que quiero lograr  es cambiar la "precisión", ejemplo.

valor es 1000 a 1002  que lo redondea a 1000
valor es 1003 a 1006  que lo redondea a 1005
valor es 1007 a 1009  que lo redondea a 1010
 
en otras palabras quiero que la división mínima sea de 5.

he tratado de buscar pero creo que no se cual es el termino correcto  esta petición.

Muchas gracias.

horace

#1
Aug 30, 2020, 10:34 pm Last Edit: Aug 30, 2020, 10:35 pm by horace
you can
1. convert the integer temperature to a double
2. divide by 5.0
3. round() to nearest integer
4. multiply by 5.0
6. cast back to an integer
e.g.
Code: [Select]
#include <math.h>
#include <stdio.h>
int main(void)
{
   while(1) {
    int temperature;
    scanf("%d", &temperature);
    int approx=(int)(round((double) temperature/5.0)*5.0);
    printf("temperature %d x%d\n", temperature, approx);
    }
}

gives
Code: [Select]
1000
temperature 1000 x1000
1001
temperature 1001 x1000
1002
temperature 1002 x1000
1003
temperature 1003 x1005
1004
temperature 1004 x1005
1005
temperature 1005 x1005
1006
temperature 1006 x1005
1007
temperature 1007 x1005
1008
temperature 1008 x1010
1009
temperature 1009 x1010
1010
temperature 1010 x1010

victorhugofasanando

Muchas gracias amigo.

Resolvió mi problema. :)  :) 

Go Up