Pages: [1]   Go Down
Author Topic: SimpleTimer class -> timer mehrfach von Hand starten und ein mal durchlaufen  (Read 506 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 4
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo ich versteh die SimpleTimer nicht so ganz

was ich möchte:

einen Timer von 2 sekunden manuell starten und bei ablauf des Timers eine Funktion auslösen

Diesen Timer von 2 sekunden möchte ich jedoch öfter mal auslösen.

was ich habe:

Code:
SimpleTimer animationFinishedTimer;
Code:
startAnimationFinishedTimer();
Code:
void startAnimationFinishedTimer()
{
  Serial.println("start timer");
 
  timerStarted = true;
   
  animationFinishedTimer.setTimeout(500, sendAnimationFinished);
  animationFinishedTimer.run();
}
Code:
void sendAnimationFinished()
{
  Serial.println("animation finished");
}

iregdnwas klappt da aber nicht....beim ersten mal wird sendAnimationFinished() gar nicht aufgerufen und danach dann sofort beim run() und nicht mit der 500 ms verzögerung.

kann mir da jemand helfen?

achso und ganz wichtig: der timer muss abzubrechen sein und neu zu starten sein
« Last Edit: September 13, 2012, 10:02:39 am by iamable » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Für Deinen Timer brauchst Du die internen Hardware-Timer nicht, die sind für viel kürzere Abstände gedacht. Speichere einfach die Zeit beim Starten des Timers und überprüfe bei jedem loop()-Durchgang, ob die 2 Sekunden schon abgelaufen sind. Das kannst Du mit beliebig (sofern das RAM reicht) vielen Timern machen.

Dein Beispiel könnte schiefgehen, weil Du innerhalb des Interrupt-Handlers (was bei den Timern nach Ablauf aufgerufen wird), Ausgaben auf die serielle Schnittstelle nicht erlaubt sind.
Logged

Offline Offline
Newbie
*
Karma: 4
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ah ok gut vielen dank
Logged

Pages: [1]   Go Up
Jump to: