Asumiendo que:
- El voltaje de referencia del ADC es de 5v exactos.
- La batería está a 3.7v exactos.
- La entrada REFERENCE_3V3 recibe 3.3v exactos.
- La precisión es de 7 decimales.
Los resultados teóricos deberían ser los siguientes:
float get_battery_level()
{
float operatingVoltage = analogRead(REFERENCE_3V3); // 675
float rawVoltage = analogRead(BATT); // 757
operatingVoltage = 3.30 / operatingVoltage; // 0.0048889
rawVoltage = operatingVoltage * rawVoltage; // 3.7009951; hasta que parece estar bien.
rawVoltage *= 4.90; // 18.1348760; esto para qué?
return(rawVoltage); // 18.1348760; no es lo que esperabas verdad?
}
Esto aclara tu duda?