Anfängerfrage zu Berechnung mit unterschiedlichen Datentypen

Ja, (int)millis() wandelt den Rückgabewert von millis() in ein int. Das Ergebnis ist sehr selten richtig.

Die richtige Bedingung (damit auch der Überlauf nach ca. 49 Tagen funktioniert):

// alle xxx_millis-Variablen unsigned long
if (aktuelle_millis - letzte_millis >= intervall) {
  letzte_nillis = aktuelle_millis;
  // tu was
}

Gruß Tommy