PWM delay without blocking the code
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;
    }
  }
}