hi,

ich möchte gerne mehrere parallel geschaltete RGB-LED´s mit jeweils 20mA/Farbe per Software-PWM bei einem ATmega8 automatisiert in den drei Grundfarben (RGB) dimmen.

Es soll für eine Beleuchtung mit "Regenbogen-Farbverlauf" sein.


Was mir noch ein wenig zu schaffen macht (bin AVR-Neuling) ist das Prinzip.
Um den entsprechenden Syntax kümmere ich mich dann beim Programmieren.



Dazu benötige ich einen Timer (Timer 0; zählt bis 255 und dann erfolgt der Überlauf)

Bei einem 8 MHz Quarz bekomme ich mit einem Prescale von 64 eine Frequenz von: 8.000.000/64/256/ = 488 Hz.

Beim Überlauf wird eine Interrupt aufgerufen in dem eine Variable (z.B: 8-Bit) hochgezählt wird.

Diese Variable ist mein Zähler!


In der Interruptroutine werden Variablen für "R"; "G"; "B" mit dem Zähler verglichen (IF; THEN; ELSE).
Ist der Zähler niedriger als die Variable für die LED-Farbe wird der Port für die entsprechende LED eingeschaltet.
Ist der Zähler höher als die Variable für die LED-Farbe wird der Port für die entsprechende LED ausgeschaltet.

Die Variable für die LED kann ich dann im Hauptprogramm setzen.


Richtig so? oder habe ich noch einen elementaren Denkfehler?




Könnte ich als "Leistungsteil" für die LED´s einen einfachen Darlington Transistor z.B:

BD 675 A NPN TO225 AA 45 V 4 A

verwenden oder gehört da mehr dazu?
Pro Leistungsstufe (Farbe) sollen max. 50 LED´s zu je 20mA geschaltet werden.



Mal Dank für eure Hilfe \/


liebe Grüße,

Klingon77