PWM delay without blocking the code I want my LED to turn on gradually without using the delay() function and blocking the code. 

Here's the code i came up with:

int led_pin = 6;
unsigned long millisTimer = 0;
int PWMdelay = 5000;
int condition = 0;
int i = 0;
void setup() {
    pinMode(led_pin, OUTPUT);
}
void loop() {
    if(condition == 1){
    if ((millis() - millisTimer) &gt; PWMdelay){
        if(i&lt;255){
            i++;
            millisTimer = millis();
        }

    }
        analogWrite(led_pin, i);
    }
}


Is this the "right way" of slowing the PMW duration from 0 to 255 or there are alternative/better/easier ways?
Here is my take at this - I've followed the example code mentioned by other members and here is "FadeWithoutDelay"


const int ledPin = 11;
unsigned long previousMillis = 0;        // will store last time LED was updated
const long interval = 100;               // fade interval (milliseconds)
int brightness = 0;                      // how bright the LED is
int fadeAmount = 5;                      // how many points to fade the LED by

void setup() 
{
  pinMode(ledPin, OUTPUT);  // set the digital pin as output:
}
void loop() 
{
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis &gt;= interval) 
  {
    previousMillis = currentMillis;         // save the last state
    analogWrite(ledPin, brightness);        // Set the brightness
    brightness = brightness + fadeAmount;   // change the brightness for next time through the loop
    // reverse the direction of the fading at the ends of the fade:
    if (brightness &lt;= 0 || brightness &gt;= 255) 
    {
      fadeAmount = -fadeAmount;
    }
  }
}