Nur so als kleiner Tipp:

Auch bei dem Programm mit den LEDs werden die "setLEDs" Funktionien ständig aufgerufen - ohne große Pause. Nur merkt man das da nicht da es nichts ändert (mach mal ne Textausgabe da rein ).

Bei den Beep Funktionen merkt man das natürlich sofort.

Eine Bedingung wie "if(x > 2000)"
ist IMMER wahr wenn x größer als 2000 ist... auch bei 2100, 2455, 43432...
Genauso ist eine Bedingung wie "if(x < 2000)" IMMER wahr solange x kleiner als 2000 ist - also bei 0, 100, 143, 1423, 1999...


Da muss man schon zusätzliche Dinge einbauen damit das klappt.

z.B. so etwas:
Code:
startStopwatch1(); // Stopwatch1 starten!
uint8_t count = 0; // Sekundenzähler
while(true)
{
   if(getStopwatch1() > 1000) // 1000ms = 1s
   {                   
      switch(count) // Sekundenzähler auswerten
      {
         case 1: 
            writeString_P("Bin jetzt bei Sekunde 1\n");
			writeString_P("Wird auch nur einmal ausgegeben!\n");
         break;
         case 4: 
            writeString_P("Jetzt bei Sekunde 4\n");
         break;
         case 8: 
            writeString_P("Jetzt bei Sekunde 8\n");
			count = 0;
			writeString_P("Ich fang jetzt mal wieder von vorn an...\n\n");
         break;
      }
      count++; // Sekundenzähler erhöhen
      setStopwatch1(0);
   }
}
Nicht verwechseln - die Ausgabe erfolgt hier BEI Sekunde 1, 4 und 8 - es wird also nicht 4 Sekunden dazwischen gewartet, sondern 3 bzw. 4.

Die Stopwatches sind vor allen dazu gedacht irgendetwas periodisch auszuführen, oder verzögert nach einer gewissen Zeit.
Eine einzige für sequenzen zu benutzen ist mit einem kleinen Automaten wie oben gezeigt deutlich einfacher.

(das switch-case kann man natürlich auch durch if-else-if-else ersetzen wenn man das schöner findet)

MfG,
SlyD