#include <FastLED.h>
const int LEDPin = 4;
const int NPixels = 18; // LED Streifen Länge
CRGB leds[NPixels];
typedef struct
{ uint8_t ex; // existiert
uint8_t r,g,b;
float pos, tempo;
} Lichtpunkt;
int Lichtpunkte = 0;
const int MaxLichtpunkte = 6;
Lichtpunkt lichter[MaxLichtpunkte];
void setup()
{ for (int i=0; i<MaxLichtpunkte; i++)
{ lichter[i].ex = 0;
}
FastLED.addLeds<NEOPIXEL, LEDPin>(leds, NPixels);
}
void loop()
{
if (random(30)==1)
{ for (int i=0; i<MaxLichtpunkte; i++)
{ if (!(lichter[i].ex))
{ lichter[i].ex = 1;
lichter[i].r = random(128);
lichter[i].g = random(128);
lichter[i].b = random(128);
int w = random(3);
lichter[i].r += (w==0 ?127 :0);
lichter[i].g += (w==1 ?127 :0);
lichter[i].b += (w==2 ?127 :0);
lichter[i].pos = 0.0; // start oben
lichter[i].tempo = 0.0;
break;
}
}
}
for (int i=0; i<NPixels; i++) // LED Steifen alles schwarz
{ leds[i].r = 0;
leds[i].g = 0;
leds[i].b = 0;
leds[i].setRGB(0,0,0);
}
for (int i=0; i<MaxLichtpunkte; i++) // i+=1 i=i+1
{ if (lichter[i].ex)
{ int pos = (int)(lichter[i].pos);
if (pos<0 || pos>=NPixels) continue; // ausserhalb => nix tun
leds[ pos ].setRGB
( lichter[i].r,
lichter[i].g,
lichter[i].b
);
lichter[i].pos += lichter[i].tempo;
// lichter[i].pos = lichter[i].pos + lichter[i].tempo;
if (lichter[i].pos >= NPixels)
{ lichter[i].ex = 0;
}
lichter[i].tempo += 0.01;
}
}
FastLED.show();
delay(10);
}
Sie sind einem Link zu einer Seite gefolgt, die noch nicht existiert. Sie können die Seite mit dem Knopf Seite anlegen selbst anlegen und mit Inhalt füllen.