#include "Arduino.h"
#include <FastLED.h>
#define LED_PIN 1 //LED Strip Signal Connection
#define buttonPin 0 //Push Button Pin
#define NUM_LEDS 16 //Total no of LEDs in the LED strip. You can safely go upto 80 LEDs.
CRGB leds[NUM_LEDS];
int r, g, b;
int ColourTrig;
int LEDPower = 0;
int numb=1;
int pres=0;
int SPEED_KITT2 = 40; //Pattern2 Speed. Lower this value to increase the speed.
int SPEED_KITT3 = 25; //Pattern3 Speed. Lower this value to increase the speed.
void setup()
{
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
FastLED.clear();
pinMode(buttonPin, INPUT_PULLUP);
}
void loop()
{
ButtonScan();
switch (numb) {
case 1:
Pattern1(1); //You can change LED colour in "X", Pattern1(X) X = 1-Red, 2-Magenta, 3-Blue, 4-Cyan, 5-Green, 6-Yellow, 7- White
break;
case 2:
Pattern1(2);
break;
case 3:
Pattern1(3);
break;
case 4:
Pattern1(4);
break;
case 5:
Pattern1(5);
break;
case 6:
Pattern1(6);
break;
case 7:
Pattern1(7);
break;
case 8:
Pattern2(1);
break;
case 9:
Pattern2(2);
break;
case 10:
Pattern2(3);
break;
case 11:
Pattern2(4);
break;
case 12:
Pattern2(5);
break;
case 13:
Pattern2(6);
break;
case 14:
Pattern2(7);
break;
case 15:
Pattern3(1);
break;
case 16:
Pattern3(2);
break;
case 17:
Pattern3(3);
break;
case 18:
Pattern3(4);
break;
case 19:
Pattern3(5);
break;
case 20:
Pattern3(6);
break;
case 21:
Pattern3(7);
break;
default:
break;
}
}
void Pattern3(int ColourTrig)
{
switch (ColourTrig)
{
case 1:
r = 255;
g = b = 0;
break;
case 2:
r = b = 255;
g = 0;
break;
case 3:
b = 255;
r = g = 0;
break;
case 4:
b = g = 255;
r = 0;
break;
case 5:
g = 255;
r = b = 0;
break;
case 6:
r = g = 255;
b = 0;
break;
case 7:
r = g = b = 255;
break;
}
for (int i = 0; i < (NUM_LEDS/2); i++)
{
leds[(NUM_LEDS/2)+i] = CRGB(r, g, b);
leds[((NUM_LEDS/2)-1)-i] = CRGB(r, g, b);
FastLED.show();ButtonScan();
delay (SPEED_KITT3);
}
for (int i = 0; i < (NUM_LEDS/2); i++)
{
leds[(NUM_LEDS/2)+i] = CRGB(0, 0, 0);
leds[((NUM_LEDS/2)-1)-i] = CRGB(0, 0, 0);
FastLED.show();ButtonScan();
delay (SPEED_KITT3);
}
delay (150);
}
void Pattern2(int ColourTrig)
{
switch (ColourTrig)
{
case 1:
r = 255;
g = b = 0;
break;
case 2:
r = b = 255;
g = 0;
break;
case 3:
b = 255;
r = g = 0;
break;
case 4:
b = g = 255;
r = 0;
break;
case 5:
g = 255;
r = b = 0;
break;
case 6:
r = g = 255;
b = 0;
break;
case 7:
r = g = b = 255;
break;
}
fadeToBlackBy(leds, NUM_LEDS, 4);
uint8_t u = beat8(SPEED_KITT2, 0);
uint8_t pos1 = map(u, 255, 0, 0, NUM_LEDS);
leds[pos1] = CRGB(r, g, b);
uint8_t pos2 = map(u, 0, 255, 0, NUM_LEDS);
leds[pos2] = CRGB(r, g, b);
FastLED.show();ButtonScan();
}
void Pattern1(int ColourTrig)
{
switch (ColourTrig)
{
case 1:
r = 255;
g = b = 0;
break;
case 2:
r = b = 255;
g = 0;
break;
case 3:
b = 255;
r = g = 0;
break;
case 4:
b = g = 255;
r = 0;
break;
case 5:
g = 255;
r = b = 0;
break;
case 6:
r = g = 255;
b = 0;
break;
case 7:
r = g = b = 255;
break;
}
fadeToBlackBy(leds, NUM_LEDS, 20);
int pos = beatsin16(20, 0, NUM_LEDS-1);
leds[pos] += CRGB(r, g, b);
FastLED.show();ButtonScan();
FastLED.delay(5);
}
void ButtonScan()
{
if(digitalRead(buttonPin)==0)
{
if(pres==0)
{
numb++;
pres=1;
}
}
else
{
pres=0;
}
if(numb == 22)
{
numb = 1;
}
}