Noob seeks helps with void functions.

Thanks for your reply, yeah i think i understand it a bit better now in that context...

so the unsigned long currentMillis needs to be in the loop so it keeps a perpetual count and then the unsigned long previousMillis gets updated everytime you use it and is just compared to its previous state and then the value you actual want, so if the time has already elapsed it can procede through the code?

Also just for a sanity check is this how i would implement that? Assuming that all my variables are declared etc...

void EnergyTrailsUp()
{
    tempSensorValue = analogRead(THERMAL_PIN);
  if (tempSensorValue <50){
    dimTime = (25);
    ledSpeed = 80;
}
 else if (tempSensorValue >=50 && tempSensorValue <200){
    dimTime = (tempSensorValue/4);
    ledSpeed = 70;
}
  else if (tempSensorValue >=200 && tempSensorValue <500){
    dimTime = (tempSensorValue/2);
    ledSpeed = 60;
}
  else {
    dimTime = (350);
    ledSpeed = 50;
}
  
  for (int i=0; i<= UP_VERTICAL_NUM_LEDS; i++) {

     upVerticalLeds[i] = CRGB( 255, 128, 0);
     
     FastLED.show();

     if (currentMillis - previousMillis >= 10){
      previousMillis = currentMillis;

      upVerticalLeds[i] -= CRGB( 0, 64, 0);
     }
     
       FastLED.show();
     
      if (currentMillis - previousMillis >=ledSpeed) {
        previousMillis = currentMillis;
     
     fadeToBlackBy(upVerticalLeds, UP_VERTICAL_NUM_LEDS, dimTime);
      }
  }
}