Hi,
leider ist mir kein besserer Titel eingefallen.
Es geht um die Ansteuerung eines RGB LED Stripes. Als µC habe ich den ATMEGA 88 gewählt. Mit 4 Jumpern möchte ich 12 verschiedene Festfarben einstellen können, das funktioniert auch soweit.
Die Jumpereingänge liegen vom Programm her auf high und der Jumper verbindet gegen GND.
Die Festfarben werden von Timer0, Timer1 sowie Timer2 per PWM erzeugt und über Transistoren an den RGB LED Stripe geschaltet. Es wird also immer eine Festfarbe dargestellt.
Nun habe ich aber an einem anderen Port ebenfalls Eingänge, die low aktiv sind und über ein externes Ereignis auf high gelegt werden. Es sind 8 Eingänge und je nachdem welcher Eingang auf high geschaltet wird, soll die gejumperte Festfarbe auf eine andere Festfarbe (8 verschiedene Farben im Programm hinterlegt) umgeschaltet werden und zwar so lange, wie der Eingang high bleibt.
Die Jumper frage ich in der Do ... Loop Schleife per Select Case ab, die anderen Eingänge befinden sich in einer Unterroutine, die am Ende der Select case, also hinter End Select aufgerufen wird.
Z.B.: ich stelle als gejumperte Festfarbe ROT ein. Wird nun einer der Eingänge an dem anderen Port auf high gesetzt (z. B. für einen Farbwechsel auf BLAU), dann wird der alte Wert also ROT nicht im Timer zurückgesetzt sondern es werden einfach die neuen Werte dazugenommen. Die abgestrahlte Farbe ist nun eine Mischung aus ROT und BLAU.
Was muss ich tun, dass die alte Farbe zuerst gelöscht wird und wirklich nur die neue Farbe erscheint?
Gruß und schönen Sonntag
Michael
leider ist mir kein besserer Titel eingefallen.
Es geht um die Ansteuerung eines RGB LED Stripes. Als µC habe ich den ATMEGA 88 gewählt. Mit 4 Jumpern möchte ich 12 verschiedene Festfarben einstellen können, das funktioniert auch soweit.
Die Jumpereingänge liegen vom Programm her auf high und der Jumper verbindet gegen GND.
Die Festfarben werden von Timer0, Timer1 sowie Timer2 per PWM erzeugt und über Transistoren an den RGB LED Stripe geschaltet. Es wird also immer eine Festfarbe dargestellt.
Nun habe ich aber an einem anderen Port ebenfalls Eingänge, die low aktiv sind und über ein externes Ereignis auf high gelegt werden. Es sind 8 Eingänge und je nachdem welcher Eingang auf high geschaltet wird, soll die gejumperte Festfarbe auf eine andere Festfarbe (8 verschiedene Farben im Programm hinterlegt) umgeschaltet werden und zwar so lange, wie der Eingang high bleibt.
Die Jumper frage ich in der Do ... Loop Schleife per Select Case ab, die anderen Eingänge befinden sich in einer Unterroutine, die am Ende der Select case, also hinter End Select aufgerufen wird.
Z.B.: ich stelle als gejumperte Festfarbe ROT ein. Wird nun einer der Eingänge an dem anderen Port auf high gesetzt (z. B. für einen Farbwechsel auf BLAU), dann wird der alte Wert also ROT nicht im Timer zurückgesetzt sondern es werden einfach die neuen Werte dazugenommen. Die abgestrahlte Farbe ist nun eine Mischung aus ROT und BLAU.
Was muss ich tun, dass die alte Farbe zuerst gelöscht wird und wirklich nur die neue Farbe erscheint?
Gruß und schönen Sonntag
Michael