Delay ohne delay

Hallo,
verzeihung das ich so lange nicht mehr zurückgeschrieben habe.Hab einfach kurz mal pause gemacht und mir das alles in ruhe angeschaut.

Dieses Forum ist eigentlich kein Programmierservice, sondern soll Hilfestellungen geben.

Ja ich weiss, anfangs war meine frage ja eigentlich nur wie man delay ohne delay hinbekommt, aber irgendwie hat sich das ganze ausgeweitet.

Der Knopf kommt an Pin 30 (nach meinem Sketch).

Selbstverständlich habe ich auch die entsprechende pin nummer im sketch auf 36 geändert. Und der Wiederstand geht vom GND des arduino zum knopfpin von dem auch ein kabel zum pin 36 führt.

Dieser Code macht gar nichts, da die Variable start nicht definiert ist.

Natürlich habe ich die variablenn definiert, ich habe es bloß nicht aufgeschrieben weil ich dachte das wäre selbstverständlich.

Mir ist aufgefallen das du den code für die knöpfe verändert hast, weswegen sie wahrscheinlich nicht funktionieren, denn das programm1 ist beim anschalten des arduino sofort an und lässt sich weder ausschalten noch pausieren.
Das programm1 läuft zwar aber ohne wartezeiten, d.h. nachdem k[0] ausgeganden ist und k[1-3] angehen, fadet die led in einer tour durch ohne wartezeiten.
Könnte das vielleicht daran liegen das du folgendes:

else if (status == 3 && millis() - previousMillis > 60000L)

beim aktuellsten sketch durch:

else if (status == 3 && millis() > nextMillis)

ersetzt hast?
Das mit den statusen habe ich jetzt einiger maßen verstanden deswegen habe ich programm1 ganz am anfang verändert, da ja beim start von programm1 k[0] angehen soll:

void programm1() { 
  if (status == 0){
    digitalWrite(k[0], LOW);
    status = 1;
  } else if (sensors.getTempC(Sensor[0]) >= 25.8 && status == 1) {
    digitalWrite(k[0], HIGH);
    status = 2;
    nextMillis = millis() + 60000L;
  } else if (status == 2 && millis() > nextMillis) {
    digitalWrite(k[1], LOW);
    digitalWrite(k[2], LOW);
    digitalWrite(k[3], LOW);
    fade = 0;
    analogWrite(ledPin, fade);
    nextMillis += FADE_DELAY;
    status = 3;
  } else if (status == 3 && millis() > nextMillis) {
    nextMillis += FADE_DELAY;
    analogWrite(ledPin, ++fade);
    if (fade >= 51) {
		status = 4;
		nextMillis = millis() + 120000L;
	}
  } else if (status == 4 && millis() > nextMillis) {
    nextMillis += FADE_DELAY;
    analogWrite(ledPin, ++fade);
    status = 5;
  } else if (status == 5 && millis() > nextMillis) {
    nextMillis += FADE_DELAY;
    analogWrite(ledPin, ++fade);
    if (fade >= 102) {
      status = 6;
      nextMillis = millis() + 180000L;
    }
  } else if (status == 6 && millis() > nextMillis) {
    nextMillis += FADE_DELAY;
    analogWrite(ledPin, ++fade);
    status = 7;
  } else if (status == 7 && millis() > nextMillis) {
    nextMillis += FADE_DELAY;
    analogWrite(ledPin, ++fade);
    if (fade >= 153) {
      status = 8;
      nextMillis = millis() + 240000L;
    }
  } else if (status == 8 && millis() > nextMillis) {
    nextMillis += FADE_DELAY;
    analogWrite(ledPin, ++fade);
    status = 9;
  } else if (status == 9 && millis() > nextMillis) {
    nextMillis += FADE_DELAY;
    analogWrite(ledPin, ++fade);
    if (fade >= 255) {
      status = 10;
    }
  }
  if (sensors.getTempC(Sensor[0]) >= 30.0 && thresholdMillis == 0) {
    digitalWrite(k[1], HIGH);
    thresholdMillis = millis() + 300000L;
  } else if (thresholdMillis && millis() > thresholdMillis) {
    digitalWrite(k[2], HIGH);
    digitalWrite(k[3], HIGH);
    analogWrite(ledPin, 0);
    thresholdMillis = 0;
    nextMillis = 0;
    status = 0;
  }   
}