#include <FastLED.h>
#define NUM_LEDS 15
#define LED_PIN 12 // port podłączenie ledów
#define DRLSignal 2 // port podłączenia światła do jazdy dziennej
#define NUM_LEDS 60 // ilość ledów
#define BlinkerLEDs NUM_LEDS / 2
int BlinkerSpeed = 8; // prędkość kierunkowskazu
int BlinkerOffDelay = 250; // opóźnienie kierunowskazu
int StartupSpeed = 15; // prędkość animacji powitalnej DRL
int DRLDetect = 0;
int LeftSignalDetected = 1;
int DRLColour = 1;
int r, r_dim = 0;
int b, b_dim = 30;
int g, g_dim = 30;
CRGB leds[NUM_LEDS];
//*****************************************************
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
}
//********************************************************
void loop() {
if (DRLDetect == 0) {
if (digitalRead(DRLSignal) == 1) {
DRLDetect = 1;
}
}
if (DRLDetect == 2) {
if (digitalRead(DRLSignal) == 0) {
DRLDetect = 3;
}
}
if (DRLDetect == 1) {
DRL_ON();
DRLDetect = 2;
}
if (DRLDetect == 3) {
DRL_OFF();
DRLDetect = 0;
}
}
void DRL_ON() {
for (int j = ((NUM_LEDS / 2) - 1); j >= 0; j--) // start
{
leds[j] = CRGB(0, 30, 30);
leds[j + 1] = CRGB(0, 0, 0);
leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j)] = CRGB(0, 30, 30);
leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j) - 1] = CRGB(0, 0, 0);
FastLED.show();
delay(StartupSpeed);
}
for (int i = 0; i < (NUM_LEDS / 2); i++) // powrót
{
leds[i] = CRGB(0, 30, 30);
leds[(NUM_LEDS - 1) - i] = CRGB(0, 30, 30);
FastLED.show();
delay(StartupSpeed);
}
for (int j = ((NUM_LEDS / 2) - 1); j >= 0; j--) // rozjaśnienie
{
leds[j] = CRGB(255, 255, 255);
leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j)] = CRGB(255, 255, 255);
FastLED.show();
delay(StartupSpeed);
}
}
void DRL_OFF() {
for (int j = 0; j <= ((NUM_LEDS / 2) - 1); j++) {
leds[j] = CRGB(r, g, b);
leds[j - 1] = CRGB(r_dim, g_dim, b_dim);
leds[(NUM_LEDS - 1) - j] = CRGB(r, g, b);
leds[(NUM_LEDS)-j] = CRGB(r_dim, g_dim, b_dim);
FastLED.show();
delay(StartupSpeed);
}
leds[((NUM_LEDS / 2) - 1)] = CRGB(r_dim, g_dim, b_dim);
leds[((NUM_LEDS / 2) - 1) + 1] = CRGB(r_dim, g_dim, b_dim);
FastLED.show();
for (int j = ((NUM_LEDS / 2) - 1); j >= 0; j--) {
leds[j] = CRGB(r_dim, g_dim, b_dim);
leds[j + 1] = CRGB(0, 0, 0);
leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j)] = CRGB(r_dim, g_dim, b_dim);
leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j) - 1] = CRGB(0, 0, 0);
FastLED.show();
delay(StartupSpeed);
}
for (int j = 0; j <= ((NUM_LEDS / 2) - 1); j++) {
leds[j] = CRGB(r_dim, g_dim, b_dim);
leds[j - 1] = CRGB(0, 0, 0);
leds[(NUM_LEDS - 1) - j] = CRGB(r_dim, g_dim, b_dim);
leds[(NUM_LEDS)-j] = CRGB(0, 0, 0);
FastLED.show();
delay(StartupSpeed);
}
leds[(NUM_LEDS / 2) - 1] = CRGB(0, 0, 0);
leds[NUM_LEDS / 2] = CRGB(0, 0, 0);
FastLED.show();
}