Hi Leute,

zur Zeit baue ich mir eine Deckenbeleuchtung mit 5 Halogenstrahlern und wahrscheinlich 20 RGB-LEDs zur indirekten Beleuchtung. Jede dieser LEDs soll einzeln ansteuerbar sein um später noch ein paar nette Effekte einbauen zu können

Ich habe schon ein Programm geschrieben, mit dem ich per Timer EINE LED super steuern kann.
Bei den 20 LEDs werden Shiftregister nacheinander die LEDs an, bzw ausschalten, sodass immer nur eine LED zur gleichen Zeit leuchtet. (Die Shiftregister werden zurzeit noch per Software simuliert)

Jetzt steht ich vor dem Problem, dass der Controller (Mega 8/16MHz) anscheinend gut ausgelastet ist und die LED flackert. Deshalb habe ich die SoftwarePWM aus dem Timer genommen und in eine Do-Loop-Schleife gesetzt.
Meine Frage ist jetzt, wie ich das am besten löse, um auch noch Signale einer Fernbedienung (Funk RFM12) auswerten zu können?

- Software-PWM in Do-Loop, Timer und Interupt für ändern der Farben und andere Funktionen
- Software-PWM in Timer, Do-Loop + Interupt für andere Farben und Funktionen
- Hardware-PWM und LEDs per Timer/Do-Loop durchschalten

Diese drei Lösungsansätze scheinen machbar zu sein, wobei der zweite Punkt wahrscheinlich in ASM programmiert werden müsste und der Timer genaustens eingestellt werden, sodass die LEDs nicht flackern.

Den ersten Punkt habe ich eben ausprobiert und schein ganz gut zu laufen: Der Controller schaltet alle LEDs durch, flackert nicht. Mit einem Timer kann ich kurze befehle ausführen ohne dass man es merkt. Bleibt nur noch auszuprobieren ob das Funkmodul schnell genug ausgelesen werden kann, ohne dass die LEDs ausfallen.

Was würdet ihr vorschlagen? Wie wird das bei den RGB-Würfeln mit noch mehr LEDs gelöst?

Schonmal vielen Dank für eure Hilfe
Monday

EDIT: Nachteil bei Hardware-PWM wäre ausßerdem, dass ich keinen Timer mehr frei hätte um Farben zu wechseln, das ginge dann nur noch per do-loop und wait