Hallo, kann mir mal bitte jemand erklären wie ich vorgehen muss um ein paar LEDs mittels Software PWM (Bascom) anzusteuern? Per Hard PWM ist das ja kein großes Problem, aber wie dasn un mit Soft genau funktionieren soll ist mir unklar. Wäre nett wenn mir mal jemand einen Code Schnipsel geben kann wo von mir aus 3 Leds nacheiander Ein- und Ausfaden. Danke schonmal!
Ich bin inzwischen soweit das 3 Leds gleichzeitig an und ausgehen. Wie kann ich aber nun die LEDs einmzeln ansteuern? Also z.B wenn led 1 aus led2 an oder wenn led2 halb aus dann led3 an. Hier mal mein 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
Eine frage hab es jetzt mal ausprobiert mit meinem Atmega16 mit 8 mhz und die leds werden zwar dunkler aber sie flacker wie kann man dass umstellen das die nicht mehr flackern???
Ich würde es anders machen - in der Timer0-Routine die PWM realisieren und dann im Hauptprogramm (oder auch mit Timer1, langsamer) die Helligkeit einstellen: OnTimer0: incr pwm_count 'ein Byte das immer von 1 bis 20 läuft if pwm_count > 20 then pwm_count = 1 if pwm_count > led1helligkeit then led1 = 0 else led1 = 1 if pwm_count > led2helligkeit then led2 = 0 else led2 = 1 if pwm_count > led3helligkeit then led3 = 0 else led3 = 1 return 'main: for i = 0 to 20 waitms 200 'der ISR eine Chance led1helligkeit = i 'hier andere LEDs einstellen next i usw.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.