Autor Tema: Redondear a la centena  (Leído 3411 veces)

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

Desconectado osmangutierrez

  • PIC10
  • *
  • Mensajes: 15
Redondear a la centena
« en: 05 de Junio de 2023, 18:55:15 »
Hola de nuevo.
Mi caso es el siguiente: Estoy utilizando un potenciometro para obtener valores numericos entre 10000 y 17000 con este codigo:
Código: [Seleccionar]
void loop() {
  sensorValue = analogRead(A0);
  sensorValue = map(sensorValue, 0, 1023, 10000, 17000);
}
con la lectura obtengo:
10506
10540
10647
10654
10747
10783 hasta llegar a a los 17000.
Ahora mi duda es si se puede redondear estos valores obtenidos a la centena?
cosa que me queden asi:
10506 -> 10600
10540 -> 10600
10647 -> 10700
10654 -> 10700
10747 -> 10800
10783 -> 10800 y asi hasta llegar a los 17000

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Redondear a la centena
« Respuesta #1 en: 05 de Junio de 2023, 20:57:20 »
Hola, la resolución de tu ADC tiene que tener 15 bits.
Prueba a ignorar los 7 bits de menor peso. Si bien de esa manera no tendrás un redondeo en particiones de 100, pero es un comienzo.
Otra opción es leer de manera individual los dígitos de la unidad y decena, y colocarles el valor de 0.
« Última modificación: 05 de Junio de 2023, 21:00:00 por Robert76 »

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Redondear a la centena
« Respuesta #2 en: 05 de Junio de 2023, 21:14:04 »
Probá esto
Código: [Seleccionar]
void loop() {
  sensorValue = analogRead(A0);
  sensorValue = map(sensorValue, 0, 1023, 10000, 17000);
  uint8_t r = sensorValue%100 ;
  if(r!=0) sensorValue += 100-r ;
}

Desconectado osmangutierrez

  • PIC10
  • *
  • Mensajes: 15
Re:Redondear a la centena
« Respuesta #3 en: 06 de Junio de 2023, 17:37:15 »
Gracias Eduardo, me funciono:
Código: [Seleccionar]
void loop() {
  sensorValue = analogRead(A0);
  maped = map(sensorValue, 0, 1023, 10000, 17000);
  residuo = maped % 100;
  resultado = maped - residuo;
  Serial.print(String("ADC: ") + sensorValue);
  Serial.print(String("  Maped: ") + maped);
  Serial.print(String("  Residuo: ") + residuo);
  Serial.println(String("  Resultado: ") + resultado);
}
Doy por solucionada mi duda  8)