LED Programmierbar Lauflicht

Das hatte ich befürchtet, aber ich wollte die Möglichkeiten zumindest mal erwähnt haben :roll_eyes:

Von mir daher noch eine ganz einfache Variante, getestet mit Mega2560 und WS2815:

#include <FastLED.h>
#include <Bounce2.h>  // https://github.com/thomasfredericks/Bounce2

// LED Stripes
#define LEDs_Anzahl_1 20 // Anzahl von LEDs auf dem Stripe
#define LEDs_Anzahl_2 20 // Anzahl von LEDs auf dem Stripe
#define LEDs_Anzahl_3 20 // Anzahl von LEDs auf dem Stripe
#define LEDs_Anzahl_4 20 // Anzahl von LEDs auf dem Stripe
#define LEDs_Anzahl_5 20 // Anzahl von LEDs auf dem Stripe
#define LEDs_Anzahl_6 20 // Anzahl von LEDs auf dem Stripe
#define LEDs_Anzahl_7 20 // Anzahl von LEDs auf dem Stripe

// Taster
const byte Taster1 = 22; // Taster1 auf Pin22
const byte Taster2 = 23; // Taster2 auf Pin23
const byte Taster3 = 24; // Taster3 auf Pin24
const byte Taster4 = 25; // Taster4 auf Pin25
const byte Taster5 = 26; // Taster5 auf Pin26
const byte Taster6 = 27; // Taster6 auf Pin27
const byte Taster7 = 28; // Taster7 auf Pin28

Bounce button1 = Bounce(Taster1, 100);  // 100 = 100 ms debounce time
Bounce button2 = Bounce(Taster2, 100);
Bounce button3 = Bounce(Taster3, 100);
Bounce button4 = Bounce(Taster4, 100);
Bounce button5 = Bounce(Taster5, 100);
Bounce button6 = Bounce(Taster6, 100);
Bounce button7 = Bounce(Taster7, 100);

// LED Stripes
const byte LED_Stripe1 = 30; // LED_Stripe1 auf Pin 30
const byte LED_Stripe2 = 31; // LED_Stripe2 auf Pin 31
const byte LED_Stripe3 = 32; // LED_Stripe3 auf Pin 32
const byte LED_Stripe4 = 33; // LED_Stripe4 auf Pin 33
const byte LED_Stripe5 = 34; // LED_Stripe5 auf Pin 34
const byte LED_Stripe6 = 35; // LED_Stripe6 auf Pin 35
const byte LED_Stripe7 = 36; // LED_Stripe7 auf Pin 36

CRGB leds1[LEDs_Anzahl_1];
CRGB leds2[LEDs_Anzahl_2];
CRGB leds3[LEDs_Anzahl_3];
CRGB leds4[LEDs_Anzahl_4];
CRGB leds5[LEDs_Anzahl_5];
CRGB leds6[LEDs_Anzahl_6];
CRGB leds7[LEDs_Anzahl_7];

bool merker1;
bool merker2;
bool merker3;
bool merker4;
bool merker5;
bool merker6;
bool merker7;

byte lauflicht1;
byte lauflicht2;
byte lauflicht3;
byte lauflicht4;
byte lauflicht5;
byte lauflicht6;
byte lauflicht7;

const uint32_t Intervall1 = 100;
const uint32_t Intervall2 = 100;
const uint32_t Intervall3 = 100;
const uint32_t Intervall4 = 100;
const uint32_t Intervall5 = 100;
const uint32_t Intervall6 = 100;
const uint32_t Intervall7 = 100;

uint32_t vorhin1;
uint32_t vorhin2;
uint32_t vorhin3;
uint32_t vorhin4;
uint32_t vorhin5;
uint32_t vorhin6;
uint32_t vorhin7;

void setup()
{
  //Zuweisung Taster auf Pins des Arduinos
  pinMode( Taster1, INPUT_PULLUP);
  pinMode( Taster2, INPUT_PULLUP);
  pinMode( Taster3, INPUT_PULLUP);
  pinMode( Taster4, INPUT_PULLUP);
  pinMode( Taster5, INPUT_PULLUP);
  pinMode( Taster6, INPUT_PULLUP);
  pinMode( Taster7, INPUT_PULLUP);

  button1.attach(Taster1);
  button2.attach(Taster2);
  button3.attach(Taster3);
  button4.attach(Taster4);
  button5.attach(Taster5);
  button6.attach(Taster6);
  button7.attach(Taster7);

  button1.interval(100); // interval in ms
  button2.interval(100); // interval in ms
  button3.interval(100); // interval in ms
  button4.interval(100); // interval in ms
  button5.interval(100); // interval in ms
  button6.interval(100); // interval in ms
  button7.interval(100); // interval in ms

  FastLED.addLeds<WS2812B, LED_Stripe1 , GRB>(leds1, LEDs_Anzahl_1);
  FastLED.addLeds<WS2812B, LED_Stripe2 , GRB>(leds2, LEDs_Anzahl_2);
  FastLED.addLeds<WS2812B, LED_Stripe3 , GRB>(leds3, LEDs_Anzahl_3);
  FastLED.addLeds<WS2812B, LED_Stripe4 , GRB>(leds4, LEDs_Anzahl_4);
  FastLED.addLeds<WS2812B, LED_Stripe5 , GRB>(leds5, LEDs_Anzahl_5);
  FastLED.addLeds<WS2812B, LED_Stripe6 , GRB>(leds6, LEDs_Anzahl_6);
  FastLED.addLeds<WS2812B, LED_Stripe7 , GRB>(leds7, LEDs_Anzahl_7);

  FastLED.show();
}

void loop()
{
  uint32_t jetzt = millis();
  bool neu = false;

  button1.update();
  button2.update();
  button3.update();
  button4.update();
  button5.update();
  button6.update();
  button7.update();

  if (button1.fell())
  {
    merker1 = !merker1;
  }
  if (button2.fell())
  {
    merker2 = !merker2;
  }
  if (button3.fell())
  {
    merker3 = !merker3;
  }
  if (button4.fell())
  {
    merker4 = !merker4;
  }
  if (button5.fell())
  {
    merker5 = !merker5;
  }
  if (button6.fell())
  {
    merker6 = !merker6;
  }
  if (button7.fell())
  {
    merker7 = !merker7;
  }

  if (jetzt - vorhin1 >= Intervall1)
  {
    neu = true;
    if (merker1)
    {
      vorhin1 = jetzt;
      leds1[lauflicht1] = CRGB::Black;
      leds1[LEDs_Anzahl_1 - lauflicht1 - 1] = CRGB::Black;
      lauflicht1++;
      if (lauflicht1 >= LEDs_Anzahl_1) lauflicht1 = 0;
      leds1[lauflicht1] = CRGB::Green;
      leds1[LEDs_Anzahl_1 - lauflicht1 - 1] = CRGB::Red;
    } else {
      for (lauflicht1 = 0; lauflicht1 < LEDs_Anzahl_1; lauflicht1++)
      {
        leds1[lauflicht1] = CRGB::Black;
      }
    }
  }

  if (neu) FastLED.show();
}