Hallo,
kannst du mir dafür ein Beispiel geben.
Mein Verständnisproblem liegt momentan darin, dass ich nur einen Eingang (Potentiometer) habe, welcher Werte zwischen 0 und 255 annehmen kann. Wenn ich jetzt 3 verschiedene PWMs habe müssen diese wie im Diagram dargestellt geregelt werden.
Für mich heist das, dass sich 6 verschiedene Kombinationen ergeben (240 / 40 = 6), eigentlich sind es 8, aber alle LEDs an und alle LEDs aus will ich jetzt mal weglassen.
Ich habe also für jede Kombination 40 Schritte (vom Potentiometer) mit denen ich das PWM-Signal von 0 - 240 in 6er-Schritten regeln muss.
Ich hatte mir da folgenden Code gedacht:
Leider funktioniert das so nicht, die LEDs gehen so mehr oder minder schlagartig an und aus, wenn ich am Poti drehe.Code:$regfile = "m8def.dat" $crystal = 3686400 On Timer0 Ontimer0 Dim Led1 As Byte Dim Led2 As Byte Dim Led3 As Byte Dim D1 As Byte Dim D2 As Byte Dim D3 As Byte Dim D4 As Byte Dim D5 As Byte Dim D6 As Byte Dim D2_1 As Byte Dim D4_1 As Byte Dim D6_1 As Byte Ddrc = &B00000000 Admux = &B01100000 Adcsr = &B11101111 Sreg.7 = 1 Config Pinb.1 = Output Config Pinb.2 = Output Tccr0 = &B00000010 Timsk.toie0 = 1 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Config Timer2 = Pwm , Compare = Clear , Prescale = 1 Do Compare1a = Led1 Compare1b = Led2 Ocr2 = Led3 Loop D1 = Adch D2_1 = Adch - 40 D2 = Not D2_1 D3 = Adch - 80 D4_1 = Adch - 120 D4 = Not D4_1 D5 = Adch - 160 D6_1 = Adch - 200 D6 = Not D6_1 Ontimer0: If Adch <= 40 Then Led1 = 240 Led2 = D1 * 6 Led3 = 0 Else If Adch <= 80 Then Led1 = D2 * 6 Led2 = 240 Led3 = 0 Else If Adch <= 120 Then Led1 = 0 Led2 = 240 Led3 = D3 * 6 Else If Adch <= 160 Then Led1 = 0 Led2 = D4 * 6 Led3 = 0 Else If Adch <= 200 Then Led1 = D5 * 6 Led2 = 0 Led3 = 240 Else If Adch <= 240 Then Led1 = 240 Led2 = 0 Led3 = D6 * 6 Else End If End If End If End If End If End If Return End
Also für weitere Hilfe bin ich sehr dankbar.
Grüße
Enrico






Zitieren

Lesezeichen