Countdown Timer mit Touchscreen

Hallo,

zur Zeit konstruiere ich eine Härtekammer für 3D-gedruckte Bauteile. Das ganze soll über einen Arduino gesteuert werden und funktioniert im groben wie eine Mikrowelle.

Man stellt eine Zeit und Temperatur ein und drückt auf Start. jetzt habe ich das Problem, dass ich eine Art variablen Countdowntimer brauche.

Ich habe auch einen perfekt passenden Timer gefunden,

das Problem dabei ist aber, dass man den Countdown-wert im setup() festlegt und ich meinen ja am Touchscreeen ändern will.

Habt ihr ne Idee wie ich das bewerkstelligen kann?

ich stelle man den Beispielcode von der oben genannten Library rein, dann sieht jeder hoffentlich was ich meine.

vielen Dank schonmal und schöne Grüße

Freeed

/*

  • Open serial monitor, press one of the keys below and click 'Send':
  • 'S' - to start all timers
  • 'P' - to pause all timers
  • 'R' - to restart all timers
  • 'T' - to stop all timers
    */
    #include "Countimer.h"

Countimer tUp;
Countimer tDown;
Countimer tNone;

void setup()
{
Serial.begin(9600);

// Count-up timer with 10s
tUp.setCounter(0, 0, 10, tUp.COUNT_UP, tUpComplete);
// Call print_time1() method every 1s.
tUp.setInterval(print_time1, 1000);

// Count-down timer with 21s
tDown.setCounter(0, 0, 21, tDown.COUNT_DOWN, tDownComplete);
// Call print_time2() method every 1s.
tDown.setInterval(print_time2, 1000);

// No counter
// Just call print_none() method every 2s.
tNone.setInterval(print_none, 2000);

Serial.println("Press one of the keys below and click 'Send':");
Serial.println("'S' - to start all timers");
Serial.println("'P' - to pause all timers");
Serial.println("'R' - to restart all timers");
Serial.println("'T' - to stop all timers");
}

void loop()
{
tUp.run();
tDown.run();
tNone.run();

if (Serial.available() > 0)
{
char c = toupper(Serial.read());

switch (c)
{
case 'T':
tUp.stop();
tDown.stop();
tNone.stop();
break;
case 'R':
tUp.restart();
tDown.restart();
tNone.restart();
break;
case 'S':
tUp.start();
tDown.start();
tNone.start();
break;
case 'P':
tUp.pause();
tDown.pause();
tNone.pause();
break;
default:
break;
}
}
}

void print_time1()
{
Serial.print("tUp: ");
Serial.println(tUp.getCurrentTime());
}

void print_time2()
{
Serial.print("tDown: ");
Serial.println(tDown.getCurrentTime());
}

void print_none()
{
Serial.print("tNone: millis(): ");
Serial.println(millis());
}

void tUpComplete()
{
digitalWrite(13, HIGH);
}

void tDownComplete()
{
digitalWrite(13, LOW);
}

Leider kenne ich die Bibliothek nicht, aber ich vermute, Du kannst setCounter auch in loop aufrufen, um eine neue Zeit zu setzen. Das würde ich mal probieren.

// Set up counter time(hours, minutes, seconds) for existing timer.
void setCounter(uint8_t hours, uint8_t minutes, uint8_t seconds);

Damit willkommen im Forum!

Ist das Thema so dringend, dass Du es in mehreen Forewn posten musst?
Crosspost gilt als unhöflich gegenüber den möglichen Helfenden, zumal die Informationen dann zwischen mehreren Foren verzettelt werden.

Gruß Tommy

N´abend

das mit dem Crosspost wusste ich nicht sorry. ich war nur im anderen Forum eh noch angemeldet, daher wollte ich da auch mal anfragen.

im loop hab ich immer nen error. dann sagt er mir dass tUp nicht deklariert ist.

Aber ich habe jetzt vorerst eine millis()-Lösung gefunden. Aber falls jemand sowas schonmal gemacht hat, kann er ja mal was posten.

danke

Freeed