//https://batteryglobe.com/car-battery-voltage-chart/
//https://www.kwik-fit.com/blog/what-voltage-should-a-car-battery-be#
//https://ecosoch.com/lead-acid-battery/
uint8_t ledState = 0;
int correction = 19;
void setup() {
Serial.begin(115200);
pinMode(10, OUTPUT);
pinMode(A0, INPUT);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(10, LOW);
}
void loop() {
if (((analogRead(A0) >= (959 + correction)) && (analogRead(A0) < (975 + correction))) && (ledState != 2)) { // > 11.99V and < 12.2
digitalWrite(10, HIGH);
ledState = 1;
} else if (analogRead(A0) < (959 + correction)) { // < 11.99V (from 56k/36k divider 4.69V)
digitalWrite(10, LOW);
ledState = 2;
} else if (analogRead(A0) > (981 + correction)) { // > 12.3V (from 56k/36k divider 4.74)
digitalWrite(10, HIGH);
ledState = 0;
}
// LED off: 0 -- battery ok
// LED on: 1 -- battery is going low, prepare for charge
// LED blink: 2 -- battery discharged, charge asap
if (ledState == 2) {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
} else if (ledState == 0) {
digitalWrite(LED_BUILTIN, LOW);
} else if (ledState == 1) {
digitalWrite(LED_BUILTIN, HIGH);
}
delay(1000);
Serial.println(analogRead(A0));
}