Die ersten vier LEDs blinken, wie ich das von amerikanischen Polizeiautos aus Filmen kenne. Die weiteren bilden ein Lauflicht.
/* APA102 Anfang */
#include "FastLED.h"
FASTLED_USING_NAMESPACE
#define LED_TYPE APA102
#define COLOR_ORDER BGR
#define BRIGHTNESS 30
#define NUM_LEDS 12
CRGB leds[NUM_LEDS];
/* APA102 Ende */
const byte anzlichtIntervall = 8, anzLeds = NUM_LEDS;
const unsigned int lichtIntervall[anzLeds][anzlichtIntervall] =
{
/* led0 */ {50, 100, 50, 300, 0, 0, 0, 0},
/* led1 */ {50, 300, 50, 100, 0, 0, 0, 0},
/* led2 */ {50, 300, 50, 100, 0, 0, 0, 0},
/* led3 */ {50, 100, 50, 300, 0, 0, 0, 0},
/* led4 */ {100, 80, 100, 0, 100, 0, 100, 0},
/* led5 */ {100, 0, 100, 80, 100, 0, 100, 0},
/* led6 */ {100, 0, 100, 0, 100, 80, 100, 0},
/* led7 */ {100, 0, 100, 0, 100, 0, 100, 80},
/* led8 */ {100, 0, 100, 0, 100, 0, 100, 80},
/* led9 */ {100, 0, 100, 0, 100, 80, 100, 0},
/* led10 */ {100, 0, 100, 80, 100, 0, 100, 0},
/* led11 */ {100, 80, 100, 0, 100, 0, 100, 0}
};
byte index;
unsigned int lichtZaehler[anzLeds];
bool lichtStatus[anzLeds];
unsigned long aktMillis, lichtMillis[anzLeds];
void setup() {
/* APA102 Anfang */
FastLED.addLeds<LED_TYPE, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
LEDS.showColor(CRGB(0, 0, 0));
/* APA102 Ende */
}
void loop()
{
aktMillis = millis();
if (aktMillis - lichtMillis[index] >= lichtIntervall[index][lichtZaehler[index]]) {
lichtMillis[index] = aktMillis;
if (lichtIntervall[index][lichtZaehler[index]] > 0) {
dW(index, lichtStatus[index]); // ersetzt digitalWrite()
}
lichtStatus[index] = !lichtStatus[index];
lichtZaehler[index]++;
lichtZaehler[index] = lichtZaehler[index] % anzlichtIntervall;
}
index++;
index = index % anzLeds;
}
/* APA102 Anfang */
void dW(byte pos, bool status) {
if (status) {
leds[pos] = CRGB::White;
} else {
leds[pos] = CRGB::Black;
}
// send the 'leds' array out to the actual LED strip
FastLED.show();
}
/* APA102 Ende */
Ich hoffe, jemand hat Spaß daran 