Daniel Joachims schrieb:
> Ok Danke euch beiden erstmal ich werde mal schauen was sich da so machen
> lässt. Hab aber noch eine andere Frage, und zwar wie kann ich
> realisieren das ich die PWM anhalten kann?
Indem du diesen ganzen Ansatz
1 | while(1)
|
2 | {
|
3 | for (char a = 0; a<65; a++)
|
4 | {
|
5 | pwm_r = a;
|
6 | pwm_b = 64 - a;
|
7 | for (long b = 0;b<1000000;b++){asm("nop");};
|
8 | }
|
9 |
|
10 | for (char a = 0; a<65; a++)
|
11 | {
|
12 | pwm_b = a;
|
13 | pwm_g = 64 - a;
|
14 | for (long b = 0;b<1000000;b++){asm("nop");};
|
15 | }
|
16 |
|
17 | for (char a = 0; a<65; a++)
|
18 | {
|
19 | pwm_g = a;
|
20 | pwm_r = 64 - a;
|
21 | for (long b = 0;b<1000000;b++){asm("nop");};
|
22 | }
|
überdenkst.
Solche 'Ablaufsteuerungen' mittels for-Schleife und einem Delay
dahinter, sind zwar einfach programmiert aber auch genauso unflexibel,
wenn man auch nur ein bischen mehr will.
Was du brauchst:
Einen Mechanismus, der die 'Farbeinstellung' abhängig davon, auf welcher
Einstellung sie gerade ist, beim nächsten Aufruf des Mechanismus auf den
nächsten Wert setzt.
Eine Statemachine mit 3 Zuständen und einem laufenden Dimm-Index
(dein jetziges a) wäre dafür zb genau das Richtige.
Die Farbe wechselt nur, solange die State Machine auch aufgerufen wird.
Keine Aufrufe - kein Farbwechsel. Und dieser Aufruf lässt sich ja mit 2
Tasten leicht ein und ausschalten.