¿Cuál es la mejor manera de asignar mapas a flotar en Arduino?

3

En Arduino, ¿cómo asigno un valor flotante de valor Integer o viceversa?

Por ejemplo, esta simple secuencia de comandos no imprime 1600 pero sigue devolviendo un valor flotante de 0.00?

float a = 0.5;
a = map(a, 0.0, 1.0, 0.0, 3200.0);
Serial.println(a);
    
pregunta Monte Carlo

2 respuestas

3

Según las páginas de Arduino:

  

La función map () usa matemáticas enteras, por lo que no generará fracciones, cuando la matemática podría indicar que debería hacerlo. Los residuos fraccionarios se truncan y no se redondean ni promedian.

Por lo tanto: ¿Por qué no hacerlo manualmente? float a = 0.5f * 3200.0f;

    
respondido por el Tom L.
0

Encontré este como reemplazo de la función de mapa. Ponga esto antes de la función de configuración y use mapfloat en lugar de map.

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

P.S .: Esto tomará más flash rom ... pero no importa, esta solución es rápida.

    
respondido por el user66729

Lea otras preguntas en las etiquetas