#include "Arduino.h"
#include <FastLED.h>
#define LED_PIN 6 //LED Strip Signal Connection
#define SignalA 3
#define SignalB 4
#define SignalC 5
#define NUM_LEDS 120 //Total no of LEDs in the LED strip
#define BRIGHTNESS 50
int BlinkerSpeed1 = 20; //Turn Signal Running LED Speed
int BlinkerSpeed2 = 500;
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
pinMode(SignalA, INPUT);
pinMode(SignalB, INPUT);
pinMode(SignalC, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
if((digitalRead(SignalA)==0)&&(digitalRead(SignalB)==0)&&(digitalRead(SignalC)==0))
{
fullgreen();
}
if((digitalRead(SignalA)==1)&&(digitalRead(SignalB)==0)&&(digitalRead(SignalC)==1))
{
fullred();
}
if((digitalRead(SignalA)==0)&&(digitalRead(SignalB)==1)&&(digitalRead(SignalC)==0))
{
fullyellow();
}
if((digitalRead(SignalA)==0)&&(digitalRead(SignalB)==1)&&(digitalRead(SignalC)==1))
{
fullblue();
}
if((digitalRead(SignalA)==1)&&(digitalRead(SignalB)==0)&&(digitalRead(SignalC)==0))
{
fullwhite();
}
if((digitalRead(SignalA)==1)&&(digitalRead(SignalB)==0)&&(digitalRead(SignalC)==1))
{
frontwhiteandbackred();
}
if((digitalRead(SignalA)==1)&&(digitalRead(SignalB)==1)&&(digitalRead(SignalC)==0))
{
yellowrightturn();
}
if((digitalRead(SignalA)==1)&&(digitalRead(SignalB)==1)&&(digitalRead(SignalC)==1))
{
yellowleftturn();
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void fullgreen()
{
for (int i = 0; i < 120; i++)/////////////FullGreen////////
{
leds[i] = CRGB(0, 255, 0);
}
FastLED.show();
}
void fullred()
{
for (int i = 0; i < 120; i++)/////////////FullRed//////////////
{
leds[i] = CRGB(255, 0, 0);
}
FastLED.show();
}
void fullwhite()
{
for (int i = 0; i < 120; i++)/////////////FullWhite//////////
{
leds[i] = CRGB(255, 255, 255);
}
FastLED.show();
}
void fullblue()
{
for (int i = 0; i < 120; i++)/////////////FullBlue//////////
{
leds[i] = CRGB(0, 0, 255);
}
FastLED.show();
}
void fullyellow()
{
for (int i = 0; i < 120; i++)/////////////FullYellow///////////////////
{
leds[i] = CRGB(255, 255, 0);
}
FastLED.show();
delay (BlinkerSpeed2);
for (int i = 0; i < 120; i++)
{
leds[i] = CRGB(0, 0, 0);
}
FastLED.show();
delay (BlinkerSpeed2);
}
void frontwhiteandbackred()
{
for (int i = 0; i < 60; i++)/////////////White-Front//////////
{
leds[i] = CRGB(255, 255, 255);
}
for (int i = 60; i < 120; i++)/////////////Red-Back///////////
{
leds[i] = CRGB(255, 0, 0);
}
FastLED.show();
}
void yellowleftturn()
{
for (int i = 0; i < 40; i++)/////////////White-Front//////////////
{
leds[i] = CRGB(255, 255, 255);
}
for (int i = 80; i < 120; i++)/////////////Red-Back///////////////
{
leds[i] = CRGB(255, 0, 0);
}
for (int j = 40; j< 60; j++)////////////YellowLeftturn///////////
{
leds[j] = CRGB(255, 255, 0);
leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(255, 255, 0);
FastLED.show();
delay (BlinkerSpeed1);
}
for (int j = 40; j< 60; j++)
{
leds[j] = CRGB(0, 0, 0);
leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(0, 0, 0);
delay (BlinkerSpeed1);
}
}
void yellowrightturn()
{
for (int i = 20; i < 60; i++)/////////////White-Front///////////////////
{
leds[i] = CRGB(255, 255, 255);
}
for (int i = 60; i < 100; i++)/////////////Red-Back///////////////////
{
leds[i] = CRGB(255, 0, 0);
}
FastLED.show();
for (int j = 19; j >= 0; j--)////////////YellowRightturn///////////
{
leds[j] = CRGB(255, 255, 0);
leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(255, 255, 0);
FastLED.show();
delay (BlinkerSpeed1);
}
for (int j = 19; j >= 0; j--)
{
leds[j] = CRGB(0, 0, 0);
leds[(NUM_LEDS/2-1)+((NUM_LEDS/2)-j)] = CRGB(0, 0, 0);
delay (BlinkerSpeed1);
}
}