Complex single blinking LED w/o delay, for showing battery level

This shouldn't be hard, but there's too much happening for me to wrap my head around it. I've got a good start on it, I think, but I'm lost when trying to get the actual guts of it. When the user presses a button, a single LED blinks out the battery level (1 to 4 blinks which equal 25,50,75, or 100 percent).

  if (myData.Cbttn == 1) { //a single C-button push will start the sequence
    voltageLEDS = true;
  }
  //flashCount is the variable for the number of flashes needed
  if (voltageLEDS) { //flash out the voltage level in 50 millisecond blinks
    unsigned long onTime = 50; //LED will be on for 50 millis
    unsigned long offTime = 950; //LED will be off for 950 millis between blinks
    static unsigned long LEDmillis; //a static timer
    static int counter; //counter for flashes

    ...right here is where it flashes out the count



    //once the flash cycle is complete, set voltageLEDS to false
  }

But it has to do all this without any delay(). So a static counter keeps up with the current blink, but then there's 2 different times to keep track of...

OK, to make this easier, I think it will be fine if the on and off time are the same, set about 250 milliseconds. I'll see if I can figure something out...

I got it. As follows:

  if (myData.Cbttn == 1) { //a single C-button push will start the sequence
    voltageLEDS = true;
  }
  //LEDflashes is set to 1,2,3, or 4
  if (voltageLEDS) { //flash out the voltage level in red
    static unsigned long LEDmillis; //a static timer
    static int counter; //counter for flashes
    if (millis() - LEDmillis > 250UL) { //every quarter of a second
      LEDmillis = millis(); //update the timer
      if (digitalRead(redLEDpin) == HIGH) { //Is the LED on?
        digitalWrite(redLEDpin, LOW); //turn it off
        counter++; //increase the counter
      }
      else { //the LED isn't on
        digitalWrite(redLEDpin, HIGH); //turn it on
      }
    }

    if (counter == LEDflashes) { //we've completed the flash sequence
      voltageLEDS = false; //reset the init flag
      counter = 0; //reset the counter
    }
  }