#include <FastLED.h>
#define NUM_FRONT_LEFT 2
#define NUM_BACK_LEFT 2
#define NUM_FRONT_RIGHT 2
#define NUM_BACK_RIGHT 2
#define PIN_FRONT_LEFT 0 // PB0
#define PIN_BACK_LEFT 4 // PB4
#define PIN_FRONT_RIGHT 3 // PB3
#define PIN_BACK_RIGHT 5 // PB5
#define BUTTON_LEFT 1 // PB1
#define BUTTON_RIGHT 2 // PB2
CRGB frontLeft[NUM_FRONT_LEFT];
CRGB backLeft[NUM_BACK_LEFT];
CRGB frontRight[NUM_FRONT_RIGHT];
CRGB backRight[NUM_BACK_RIGHT];
bool blinkingLeft = false;
bool blinkingRight = false;
void setup() {
FastLED.addLeds<NEOPIXEL, PIN_FRONT_LEFT>(frontLeft, NUM_FRONT_LEFT);
FastLED.addLeds<NEOPIXEL, PIN_BACK_LEFT>(backLeft, NUM_BACK_LEFT);
FastLED.addLeds<NEOPIXEL, PIN_FRONT_RIGHT>(frontRight, NUM_FRONT_RIGHT);
FastLED.addLeds<NEOPIXEL, PIN_BACK_RIGHT>(backRight, NUM_BACK_RIGHT);
pinMode(BUTTON_LEFT, INPUT_PULLUP);
pinMode(BUTTON_RIGHT, INPUT_PULLUP);
setDefaultColors();
}
void loop() {
if (digitalRead(BUTTON_LEFT) == LOW && !blinkingLeft) {
blinkLeft();
}
if (digitalRead(BUTTON_RIGHT) == LOW && !blinkingRight) {
blinkRight();
}
}
void setDefaultColors() {
fill_solid(frontLeft, NUM_FRONT_LEFT, CRGB::White); // Weiß
fill_solid(backLeft, NUM_BACK_LEFT, CRGB::Red); // Rot
fill_solid(frontRight, NUM_FRONT_RIGHT, CRGB::White); // Weiß
fill_solid(backRight, NUM_BACK_RIGHT, CRGB::Red); // Rot
FastLED.show();
}
void blinkLeft() {
blinkingLeft = true;
for (int i = 0; i < 3; i++) {
fill_solid(frontLeft, NUM_FRONT_LEFT, CRGB::Orange); // Orange
fill_solid(backLeft, NUM_BACK_LEFT, CRGB::Orange); // Orange
FastLED.show();
delay(500);
fill_solid(frontLeft, NUM_FRONT_LEFT, CRGB::Black); // Aus
fill_solid(backLeft, NUM_BACK_LEFT, CRGB::Black); // Aus
FastLED.show();
delay(500);
}
setDefaultColors();
blinkingLeft = false;
}
void blinkRight() {
blinkingRight = true;
for (int i = 0; i < 3; i++) {
fill_solid(frontRight, NUM_FRONT_RIGHT, CRGB::Orange); // Orange
fill_solid(backRight, NUM_BACK_RIGHT, CRGB::Orange); // Orange
FastLED.show();
delay(500);
fill_solid(frontRight, NUM_FRONT_RIGHT, CRGB::Black); // Aus
fill_solid(backRight, NUM_BACK_RIGHT, CRGB::Black); // Aus
FastLED.show();
delay(500);
}
setDefaultColors();
blinkingRight = false;
}