Mit Arduino und Deiner IDE kann ich Dir nicht weiterhelfen (da ich eher "normale" AVR und Assembler nutze), aber generell könntest Du quick'nDirty zum Beispiel einen Timer nutzen, der Dir 'ne geeignete Zeitbasis (könnten hier zB 40ms sein) generiert. Also der Timer erzeugt alle 40ms 'n IRQ, in der ISR hinterlegst Du Deinem Hauptprogramm 'n "40ms-sind-rum" Flag. Dein Hauptprogramm fragt regelmäßig das Flag ab, und zählt ggf einen 40ms-Zähler rauf (und löscht das Flag). Erreicht der Zähler die entsprechenden Werte, schaltest Du die LEDs um, und bei 75 (=3s)setzt Du den Zähler wieder auf 0 zurück.
Interessehalber: was'n das für'ne Schaltung? Dieweil 80ms is ja recht fix für's Auge...
(P.S.: Warteschleifen, in denen der Controller "auf der Stelle hüpft", sind natürlich generell nix für Anwendungen, wo mehrere Sachen quasi-Gleichzeitig erledigt werden sollen. Dazu zählt neben den reinen Zeitschleifen (tue zichtausendmal nix)
|
Quellcode
|
1
2
3
4
|
Einsprungpunkt:
INC Register
BREQ Einsprungpunkt
;hier geht's weiter, wenn Register übergelaufen ist
|
auch die Schleifen, die auf ein bestimmtes Ereignis warten (tue nix, bis Bein x Pegel y hat)
|
Quellcode
|
1
2
3
4
|
Einsprungpunkt:
SBIC Pinregister, Pinbit
RJMP Einsprungpunkt
;hier geht's weiter, wenn das Bein low ist
|
)