Timer moet lopen vanaf het moment dat relay uit staat

Beste mensen,

dank alvast voor het meelezen en eventuele meedenken/meehelpen...

ik heb de volgende code gevonden van het internet en aangepast/bijgewerkt

//Confirm Settings
void confirmSettings() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Number of Steps:");
  lcd.setCursor(7, 1);
  lcd.print(noCookingSteps);

  delay(2000);
  for (int i = 0; i < noCookingSteps; i++) {
    lcd.clear();
    lcd.setCursor(4, 0);
    lcd.print("Step:");
    lcd.setCursor(10, 0);
    lcd.print(i + 1);

    lcd.setCursor(0, 1);
    lcd.print(cookingStepsTempArray[i][1]);
    lcd.setCursor(5, 1);
    lcd.print((char)223);
    lcd.print("C");
    lcd.setCursor(10, 1);
    lcd.print(cookingStepsTimeArray[i][0]);
    lcd.setCursor(13, 1);
    lcd.print("Min");
    delay(2000);
  }
}

//pidOutput Control
void pidOutput() {
  for (int i = 0; i < noCookingSteps; i++) {
    //LCD Setup
    lcd.clear();
    lcd.print("Step:    SP:");

    //lcd.print Step Number
    lcd.setCursor(5, 0);
    lcd.print(i + 1);

    //lcd.print Temp Setpoint
    lcd.setCursor(11, 0);
    dtostrf(cookingStepsTempArray[i][1], 5, 1, spBuffer);
    lcd.print(spBuffer);

    //Set Cooking Timer
    unsigned long cookingTimer = (cookingStepsTimeArray[i][0] * 60000);

    //windowStartTime start
    //windowStartTime = millis();

    //set Setpoint from cookingStepsArray
    Setpoint = cookingStepsTempArray[i][1];

    //lcd.print for cookingStep Monitoring
    lcd.setCursor(0, 1);
    lcd.print("T:");
    //turn the PID on
    myPID.SetMode(AUTOMATIC);

    //While 'now' reading is less than the cookingTimer, proceed with cooking.
    while (millis() <= cookingTimer) {
        //Read thermocouple temperature
        readTemp();
        //Compute PID output
        myPID.Compute();
        
        
        //When is now?
        unsigned long now = millis();

        if(millis() - windowStartTime>WindowSize)
        { //time to shift the Relay Window
          windowStartTime += WindowSize;
         }


      //Update LCD every half a second with remaining time.
      if (now - lastInt > 500) {
        lastInt = now;

        //lcd.print Seconds Remaining in cooking process
        lcd.setCursor(2, 1);
        dtostrf(((cookingTimer - now) ) / 1000), 4, 0, timeBuffer);
        lcd.print(timeBuffer);
        
        Serial.print("Timer ");
        Serial.print(cookingTimer);
        Serial.print(" now ");
        Serial.print(now);
        Serial.print(" = ");
        Serial.print((((cookingTimer - now ) / 1000), 4, 0, timeBuffer));
        Serial.print('\n');


        if (Output <= 50) {
          digitalWrite(relayPin, LOW);
          finished = millis();
          Serial.print("Op temperatuur");
          Serial.print("\n");

        } else {
          digitalWrite(relayPin, HIGH);
          Serial.print("Te koud!");
          Serial.print("\n");
        }

        //lcd.print Input Temp
        lcd.setCursor(9, 1);
        lcd.print((char)223);
        lcd.print("C");
        lcd.setCursor(11, 1);
        lcd.print(pvBuffer);

      }
    }
  }
  //turn the PID off before next step
  myPID.SetMode(MANUAL);
  digitalWrite(relayPin, LOW);
}
//readTemperature Sensor and pass it to Input
void readTemp() {
  //Read thermocouple temperature
  sensors.requestTemperatures();
  //Pass to Input of PID
  Input = sensors.getTempCByIndex(0);
  dtostrf(Input, 5, 1, pvBuffer);
}

De code zorgt voor dat er een menu is waar ik aangeef hoeveel koop stappen ik wil hebben hoe lang die moeten duren en op welke temperatuur dit moet gebeuren. vervolgens gaat hij aan de slag en print hij uit hoeveel seconde de huidige stap nog moet uitvoeren vorens na de volgende te gaan.
Alleen is het probleem dus dat met deze code

       //lcd.print Seconds Remaining in cooking process
        lcd.setCursor(2, 1);
        dtostrf(((cookingTimer - now) ) / 1000), 4, 0, timeBuffer);
        lcd.print(timeBuffer);

Hij meteen vagint af te tellen zodra je de arduino opstart, ik ben al de nodige uren aan het bekijken hoe ik hem kan laten aftellen op het moment dat de relay op tenperatuur aangeeft....
now is uitgevoerd in millis en zorgt voor dit probleem sinds die telt vanaf het moment dat de arduino aan staat. enig idee hoe nu verder?

Ik heb je hele code niet gelezen.

Het zal er wel aan liggen dat ik net pas thuis ben van het werk, en nog maar ff hier ben gaan kijken om een beetje tot rust te komen, maar...
Ik snap je laatste regel (of zijn het regels ?) in je vraag hierboven niet.

Toch kan ik je een tip geven.
Namelijk dezelfde als die ik bij elk antwoord geef, want hij bij al mijn berichten onderaan:
Kijk eens naar blink without delay.
Dat geeft je het gereedschap om te doen wat je wil.
Maar dan moet je wel die sketch goed doorgronden (dus niet even een beetje doorlezen en dan denken dat je het wel weet).
Je kunt er onder andere in zien dat je naar meer moet kijken dan de systeemklok, en dat moet je hier dus ook doen.

geef eerst maar eens het hele programma en een schema wat je zou willen,
ga dan na wat er fout gaat.