int battery_pin = A3;
float battery_read()
{
//read battery voltage per %
long sum = 0; // sum of samples taken
float voltage = 0.0; // calculated voltage
long battery_min = 0; //minimum voltage of battery before shutdown
long battery_max = 5000; //maximum voltage of battery
// collect 256 readings (256x oversampling)
for (int i = 0; i < 256; i++)
{
sum += analogRead(battery_pin);
delayMicroseconds(1000);
}
// map the oversampled range (1024 * 2^8) to 0-5000 (map uses integer math), then divide by 1000
voltage = map(sum, 0, 262144L, battery_min, battery_max) / 1000.0;
return voltage;
}
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print("Battery Level: ");
Serial.println(battery_read(), 2);
delay(1000);
}