Hallo Leute
Ich habe ein Problem mit Layer 8. Komme grad nicht so recht weiter.
Aufbau: WS2812 LED Stripe, Atmel 328.
Ich habe eine Funktion geschrieben die zwischen den Farben Übergänge
macht. Also wenn zuerst RGB255,0,0 und die neue Farbe wäre RGB0,255,0
dann macht der Code die Übergänge zwischen rot bis grün. Dieser ist wie
folgt:
1 | void RGB_color(int red_light_value, int green_light_value, int blue_light_value, int iBright)
|
2 | {
|
3 | // fader section
|
4 | for (int i = 0; i <= 255; i++)
|
5 | {
|
6 | if (i >= iOldRval - red_light_value && iOldRval < red_light_value) {
|
7 | iRval = iOldRval + i;
|
8 | }
|
9 | if (i >= iOldGval - green_light_value && iOldGval < green_light_value) {
|
10 | iGval = iOldGval + i;
|
11 | }
|
12 | if (i >= iOldBval - blue_light_value && iOldBval < blue_light_value) {
|
13 | iBval = iOldBval + i;
|
14 | }
|
15 |
|
16 | if (i >= red_light_value - iOldRval && iOldRval > red_light_value) {
|
17 | iRval = iOldRval - i;
|
18 | }
|
19 | if (i >= green_light_value - iOldGval && iOldGval > green_light_value) {
|
20 | iGval = iOldGval - i;
|
21 | }
|
22 | if (i >= blue_light_value - iOldBval && iOldBval > blue_light_value) {
|
23 | iBval = iOldBval - i;
|
24 | }
|
25 |
|
26 | for (uint16_t l=0; l < strip.numPixels(); l++)
|
27 | {
|
28 | strip.setPixelColor(l, iRval, iGval, iBval);
|
29 | }
|
30 |
|
31 | delay(25);
|
32 | strip.show();
|
33 | }
|
34 | iOldRval = iRval;
|
35 | iOldGval = iGval;
|
36 | iOldBval = iBval;
|
37 | // end fader section
|
38 | strip.setBrightness(iBright);
|
39 | }
|
Dieser funktioniert tadellos. Noch schöner wäre, wenn Led1 die alte
Farbe hätte, und die LED am Ende des Strips die neue Farbe hätte, so
dass Farbe (alt) von links nach rechts zu Farbe (neu) wechselt.
Ich stehe grad auf dem Schlauch wie ich das gescheit anstelle.