Hallo zusammen,
ich versuche gerade, ein 3 Kanal PWM Lauflicht auf Basis des Knight Rider Programms von Michael zu programmieren. Leider habe ich noch das Problem, dass die LED´s direkt hell einschalten. Es sollte eigentlich so sein, dass die 1. LED langsam aufleuchtet. Wenn diese 100 % hat, beginnt die 2. aufzuleuchten und die 1. LED wird dunkler. Wenn die 2. LED 100% hat, sollte die 3. LED langsam anfangen zu leuchten und dann wieder von vorne. Die LED´s werden im Kreis angeordnet. Dadurch entsteht dann der Effekt einer "drehenden" Leuchte.
Bin für jede Hilfe dankbar !
Alles anzeigen
ich versuche gerade, ein 3 Kanal PWM Lauflicht auf Basis des Knight Rider Programms von Michael zu programmieren. Leider habe ich noch das Problem, dass die LED´s direkt hell einschalten. Es sollte eigentlich so sein, dass die 1. LED langsam aufleuchtet. Wenn diese 100 % hat, beginnt die 2. aufzuleuchten und die 1. LED wird dunkler. Wenn die 2. LED 100% hat, sollte die 3. LED langsam anfangen zu leuchten und dann wieder von vorne. Die LED´s werden im Kreis angeordnet. Dadurch entsteht dann der Effekt einer "drehenden" Leuchte.
Bin für jede Hilfe dankbar !
BASCOM-Quellcode
- $regfile = "attiny25.dat"
- $crystal = 8000000
- $hwstack = 32
- $swstack = 24
- $framesize = 16
- Dim A As Byte
- Dim B As Byte
- Dim Z As Byte
- Dim X As Byte
- Dim Zeit As Word
- Dim Richtung As Bit
- Dim Led(3) As Byte
- Config Portb = Output
- Config Timer0 = Timer , Prescale = 1024
- Enable Timer0
- Enable Interrupts
- On Timer0 Timer0_interrupt
- A = 1
- Portb = 0
- Waitms 200
- Do
- 'nächste LED alle 0,1 sec
- If Zeit > 170 Then
- Led(a) = 255 'LED "aufladen"
- A = A + 1
- If A = 4 Then
- A = 1
- End If
- Zeit = 1
- End If
- Z = Z + 1
- 'Soft PWM
- 'Vergleich zwischen frei laufendem Zähler Z und LED()-Wert
- For B = 1 To 3
- If Led(b) > Z Then
- B = B - 1
- Portb.b = 0
- Else
- B = B - 1
- Portb.b = 1
- End If
- B = B + 1
- Next
- Loop
- '----------------
- Timer0_interrupt:
- Timer0 = 200
- ' Prescale = 64 + Timer0 = 6 = 500Hz
- ' Bei LED-Startwert von 255 ist nach 0,51 Sekunden ausgedimmt
- Zeit = Zeit + 1
- For X = 1 To 3
- If Led(x) > 0 Then
- Led(x) = Led(x) - 1 'LEDs "entladen"
- End If
- Next
- Return
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sven Loeffler ()