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?