LED im Unterprog einschalten und nach Zeitablauf wider ausschalten !ohne! delay

aus meiner sicht warst du eh schon knapp drann.

nur die Logik etwas anpassen:

immer wenn du die HGB ein schaltest, merkst du die millis

also das
previousMillis = millis();

in dein void HGBLan()

und im Loop prüfst du dann ob die HGBL an ist UND die Zeit überschritten ist ... dann schaltest die HGBL aus

also etwa

if (currentMillis - previousMillis >= ausZeit && digitalRead(HBL)) {
digitalWrite(HBL,LOW);
}

kommst damit zurecht?