Hi,

das was jetzt in deinem Code steht, ist die Hardware-PWM der ATMegas. Die läuft völlig autonom vom eigentlichen Prozessor, der so alle Zeit der Welt hat, andere Dinge zu erledigen. Die Hardware-PWM ist so sehr schnell und sehr genau, allerdings kann das Signal nur an bestimmten Pins ausgegeben werden.

Wieviele LEDs sollen denn angesteuert werden?

Vorteil der Software-PWM: es können viele LEDs individuell gesteuert werden (auch an frei wählbaren Pins)

Das hat aber dann den Nachteil, dass der Controller mit dem Steuern der LEDs beschäftigt ist, und nicht mehr viel Zeit für andere Dinge hat.

Das Prinzip dieser Methode ist so einfach wie genial: ein Timer wird so eingestellt, dass er bei Überlauf in eine Interrupt-Routine verzweigt. Dort wird eine Variable bei jedem Durchlauf um 1 erhöht. Ist jetzt der Helligkeitswert der LED (die Vorgabe also) größer als diese Zählvariable, wird der Pin, an dem die LED hängt, auf log. 1 gestellt, ansonsten auf log. 0. Erreicht die Zählvariable den maximal möglichen Helligkeitswert, wird sie wieder auf 0 zurückgesetzt.

Ich hoffe, das war jetzt einigemaßen verständlich

Die LED leuchtet also immer nur so hell, wie das der Helligkeitswert angibt. Soll die LED dann langsam heller bzw. dunker werden, kannst du das einfach per Änderung der Helligkeitswerte im Hauptprogramm erreichen.

Viele Grüße