Um Led´s nacheinander ein und auszuschalten brauchst du keine PWM!
Mit PWM kannst dimmen. Zum ein und ausschalten reicht eine schleife in der die Pins entsprechend aus und eingeschalten werden.
MFG
Vader
Um Led´s nacheinander ein und auszuschalten brauchst du keine PWM!
Mit PWM kannst dimmen. Zum ein und ausschalten reicht eine schleife in der die Pins entsprechend aus und eingeschalten werden.
MFG
Vader
Das ist mir auch klar... Ich will das sie nacheinander Ein-und Ausfaden! Habe mich vielleicht etwas dumm ausgedrückt.
Die Vorgehensweise ist ganz simpel, du musst ja für diesen Fall nicht auf eine genaue Einhaltung einer Zykluszeit achten.
Der Algorithmus sieht so aus:
Schritt 1: Schalte LED ein
Schritt 2: Warte Zeit X
Schritt 3: Schalte LED aus
Schritt 4: Warte Zeit Y
Wenn Du X immer kleiner und Y immer größer werden lässt, wird die LED dunkler.
Guck mal im Downloadverzeichnis, dort habe ich einen Source für Bascom geschrieben, welcher für so etwas modifiziert werden kann.
Ich habs nun schon selber hinbekommen, dass 3 LEDs aufeinmal an- und ausfaden. Nun würde ich die aber gene nach belieben einzeln ansteuern. Also z.B wenn led 1 aus
led2 an oder wenn led2 halb aus dann led3 an.
Code:'################################# '# Software Pulsweitenmodulation # '################################# $regfile = "M8def.dat" $crystal = 3686400 Ddrd = &B11100000 'PD7, PD6, PD5 als Ausgänge festlegen, rest Eingang Portd = &B00001100 'PullUps von PD2, PD3 Aktivieren Enable Interrupts 'Interrupts Global einschalten Enable Timer0 Config Timer0 = Timer , Prescale = 256 On Timer0 Ontimer0 Enable Timer1 Config Timer1 = Timer , Prescale = 8 On Timer1 Ontimer1 Dim Reverse As Bit Dim Helligkeit As Byte Helligkeit = 255 '###Deklarationen### Led_gr Alias Portd.7 'LED Grün Led_ge Alias Portd.6 'LED Gelb Led_ro Alias Portd.5 'LED Rot Prwata Alias Pind.3 'Programmwahltaster Speed Alias Pind.2 Do Loop Ontimer0: Toggle Led_ro Toggle Led_gr Toggle Led_ge If Led_ro = 1 Then Timer0 = 256 - Helligkeit Else Timer0 = Helligkeit End If Return Ontimer1: If Helligkeit = 255 Then Set Reverse End If If Helligkeit = 1 Then Reset Reverse End If If Reverse = 0 Then Incr Helligkeit End If If Reverse = 1 Then Helligkeit = Helligkeit - 1 End If Return
Also dafür gibts 2 Möglichkeiten:
1. Du verwendest die Timer0 und Timer1, wovon Timer1 zwei PWM-Ausgänge hat, welche durch compare1a und compare1b gesteuert werden kann. Mit dem Timer0 wären dies dann 3 PWM-Signale.
2. Du lässt einen Timer Zählen. Die LEDs ordnest du dann Werten zu, ab welche diese leuchten sollen. Beispiel:
If timer1 >100 then led1=1 else led1=0
if timer1 >150 then led2=1 else led2=0
if timer1 >200 then led3=1 else led3=0
So könnte man es ungefär machen. Mit der 2. Variante Kannst du noch mehr LEDs steuern.
Lesezeichen