Low battery led indicator

I’m creating a small project with an Arduino nano, everything will be powered by 3 1,5V Lr14C batteries and mounted with a switch turned on only when the Arduino will be used so I'm not really concerned about the durability.Eventually the batteries will discharge and I need to create a circuit that turns on a led when the voltage drops too low (I think under 3,3v may be the operative limit).I explored many possibilities and I'm going nut finding a solution,at this point I think a comparator might be the answer but I have no idea how to set the control voltage at that point without using power draining or over-complicated solutions.Thanks all.

https://www.homemade-circuits.com/simple-low-battery-indicator-circuit/
Does this help? Involves a 555 timer and a zener diode

Would it be acceptable to have the battery voltage checked only when the Arduino is running? If so, you could read the voltage directly on an analog pin. Which Arduino are you using? How is it powered?

The Arduino nano Is powered by the 3 1,5V batteries connected in series,I also thought about it but I read that it couldn't measure his own power.

By any chance there's a solution that involves a lower power consumption?

Ok, just to be clear, you have the batteries powering the Nano directly at the 5V pin?

Ah, but it can. It can measure Vcc relative to the internal "band gap" voltage, which is fixed at about 1.1V no matter what Vcc is. Here's code that supposedly does that:

// Function created to obtain chip's actual Vcc voltage value, using internal bandgap reference
// This demonstrates ability to read processors Vcc voltage and the ability to maintain A/D calibration with changing Vcc
// Now works for 168/328 and mega boards.
// Thanks to "Coding Badly" for direct register control for A/D mux
// 1/9/10 "retrolefty"

int battVolts;   // made global for wider avaliblity throughout a sketch if needed, example a low voltage alarm, etc

void setup(void)
    {
     Serial.begin(9600);
     Serial.print("volts X 100");
     Serial.println( "\r\n\r\n" );
     delay(100);
    }

void loop(void)
    {
     battVolts=getBandgap();  //Determins what actual Vcc is, (X 100), based on known bandgap voltage
     Serial.print("Battery Vcc volts =  ");
     Serial.println(battVolts);
     delay(1000);
    }

int getBandgap(void) // Returns actual value of Vcc (x 100)
    {
      // For 168/328 boards
     const long InternalReferenceVoltage = 1059L;  // Adjust this value to your boards specific internal BG voltage x1000
        // REFS1 REFS0          --> 0 1, AVcc internal ref. -Selects AVcc external reference
        // MUX3 MUX2 MUX1 MUX0  --> 1110 1.1V (VBG)         -Selects channel 14, bandgap voltage, to measure
     ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0);

     delay(50);  // Let mux settle a little to get a more stable A/D conversion
        // Start a conversion
     ADCSRA |= _BV( ADSC );
        // Wait for it to complete
     while( ( (ADCSRA & (1<<ADSC)) != 0 ) );
        // Scale the value
     int results = (((InternalReferenceVoltage * 1024L) / ADC) + 5L) / 10L; // calculates for straight line value
     return results;

    }

Yes,the batteries will be connected to the 5v pin.
Thank you so much,I'll update if it works or not.
My mental sanity (for now) is safe.

I didn't quite say it right. Instead of measuring the battery voltage on an analog pin with respect to Vcc, which doesn't do any good, it measures the bandgap voltage with respect to Vcc. So the results are kinda backwards. As the batteries discharge, the analogRead will produce a higher number.

But this uses no power in resistive dividers, and doesn't even use up a pin. Works for the 328P, but, alas, not much else.

Can't wait to try this, never heard of it before.

Is 3.3V high enough to sustain 16MHz operation? Think I would set the low voltage trip point to at least 3.6V

I also thought about lowering to 8Mhz but I think it could mess with my servo