// By: Aryan Pandya
// Created on 1.7.2023

#include <Adafruit_NeoPixel.h>

#define Line_1 3 // this is 1st strip
#define Line_2 5 // this is 2nd strip
#define Line_3 6 // this is 3rd strip
#define Line_4 9 // this is 4th strip
#define Line_5 10 // this is 5th strip
#define Line_6 11 // this is 6th strip

#define LED_COUNT 16

int myDelay = 220;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, Line_1, NEO_GRB + NEO_KHZ800);

Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(LED_COUNT, Line_2, NEO_GRB + NEO_KHZ800);

Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(LED_COUNT, Line_3, NEO_GRB + NEO_KHZ800);

Adafruit_NeoPixel strip4 = Adafruit_NeoPixel(LED_COUNT, Line_4, NEO_GRB + NEO_KHZ800);

Adafruit_NeoPixel strip5 = Adafruit_NeoPixel(LED_COUNT, Line_5, NEO_GRB + NEO_KHZ800);

Adafruit_NeoPixel strip6 = Adafruit_NeoPixel(LED_COUNT, Line_6, NEO_GRB + NEO_KHZ800);



void setup()
{
strip.begin();
strip.show();

strip2.begin();
strip2.show();

strip3.begin();
strip3.show();

strip4.begin();
strip4.show();

strip5.begin();
strip5.show();

strip6.begin();
strip6.show();

pinMode(13,OUTPUT);
}
void loop()
{
  digitalWrite(13,HIGH);
  hide_colors();
  go_second();
  go_third();
  go_forth();
  go_fifth();
  go_sixth();
  go_seventh();
  go_eight();
}


/*
--	demo --
void go_first(){
  
  //1st
  strip.setPixelColor(1, 255, 0, 0);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(2, 255, 165, 0);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(3, 0, 255, 0);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(4, 0, 0, 255);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(5, 143, 0, 255);
  strip.show();
  delay(myDelay);
  
  
  //2nd
  strip2.setPixelColor(3, 255, 0, 0);
  strip2.show();
  delay(myDelay);
  
  //3rd
  strip3.setPixelColor(3, 255, 165, 0);
  strip3.show();
  delay(myDelay);
  
  //4th
  strip4.setPixelColor(3, 0, 255, 0);
  strip4.show();
  delay(myDelay);
  
  //5th
  strip5.setPixelColor(3, 0, 0, 255);
  strip5.show();
  delay(myDelay);
  
  //6th
  strip6.setPixelColor(1, 255, 0, 0);
  strip6.show();
  delay(myDelay);
  strip6.setPixelColor(2, 255, 165, 0);
  strip6.show();
  delay(myDelay);
  strip6.setPixelColor(3, 0, 255, 0);
  strip6.show();
  delay(myDelay);
  strip6.setPixelColor(4, 0, 0, 255);
  strip6.show();
  delay(myDelay);
  strip6.setPixelColor(5, 143, 0, 255);
  strip6.show();
  delay(myDelay);
}*/


// code for the 2nd Neo Pixel Strip

void go_second(){
  
  //step 1
  strip5.setPixelColor(7, 255, 0, 0);
  strip5.show();
  delay(myDelay);
  strip5.setPixelColor(6, 255, 0, 0);
  strip5.show();
  delay(myDelay);
  
  strip6.setPixelColor(6, 255, 0, 0);
  strip6.show();
  delay(myDelay);
}



void go_third(){
  strip4.setPixelColor(7, 255, 165, 0);
  strip4.show();
  delay(myDelay);
  strip4.setPixelColor(6, 255, 165, 0);
  strip4.show();
  delay(myDelay);
  strip4.setPixelColor(5, 255, 165, 0);
  strip4.show();
  delay(myDelay);
  
  strip5.setPixelColor(5, 255, 165, 0);
  strip5.show();
  delay(myDelay);
  strip6.setPixelColor(5, 255, 165, 0);
  strip6.show();
  delay(myDelay);
}



void go_forth(){
  strip3.setPixelColor(7, 0, 255, 0);
  strip3.show();
  delay(myDelay);
  strip3.setPixelColor(6, 0, 255, 0);
  strip3.show();
  delay(myDelay);
  strip3.setPixelColor(5, 0, 255, 0);
  strip3.show();
  delay(myDelay);
  strip3.setPixelColor(4, 0, 255, 0);
  strip3.show();
  delay(myDelay);
  
  strip4.setPixelColor(4, 0, 255, 0);
  strip4.show();
  delay(myDelay);
  strip5.setPixelColor(4, 0, 255, 0);
  strip5.show();
  delay(myDelay);
  strip6.setPixelColor(4, 0, 255, 0);
  strip6.show();
  delay(myDelay);
}


void go_fifth(){
  strip2.setPixelColor(7, 0, 0, 255);
  strip2.show();
  delay(myDelay);
  strip2.setPixelColor(6, 0, 0, 255);
  strip2.show();
  delay(myDelay);
  strip2.setPixelColor(5, 0, 0, 255);
  strip2.show();
  delay(myDelay);
  strip2.setPixelColor(4, 0, 0, 255);
  strip2.show();
  delay(myDelay);
  strip2.setPixelColor(3, 0, 0, 255);
  strip2.show();
  delay(myDelay);

  strip3.setPixelColor(3, 0, 0, 255);
  strip3.show();
  delay(myDelay);
  strip4.setPixelColor(3, 0, 0, 255);
  strip4.show();
  delay(myDelay);
  strip5.setPixelColor(3, 0, 0, 255);
  strip5.show();
  delay(myDelay);
  strip6.setPixelColor(3, 0, 0, 255);
  strip6.show();
  delay(myDelay);
}



void go_sixth(){
  strip.setPixelColor(7, 143, 0, 255);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(6, 143, 0, 255);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(5, 143, 0, 255);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(4, 143, 0, 255);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(3, 143, 0, 255);
  strip.show();
  delay(myDelay);
  strip.setPixelColor(2, 143, 0, 255);
  strip.show();
  delay(myDelay);
  
  strip2.setPixelColor(2, 143, 0, 255);
  strip2.show();
  delay(myDelay);
  strip3.setPixelColor(2, 143, 0, 255);
  strip3.show();
  delay(myDelay);
  strip4.setPixelColor(2, 143, 0, 255);
  strip4.show();
  delay(myDelay);
  strip5.setPixelColor(2, 143, 0, 255);
  strip5.show();
  delay(myDelay);
  strip6.setPixelColor(2, 143, 0, 255);
  strip6.show();
  delay(myDelay);
}


void go_seventh(){
  strip.setPixelColor(1, 255, 255, 0);
  strip.show();
  delay(myDelay);
  strip2.setPixelColor(1, 255, 255, 0);
  strip2.show();
  delay(myDelay);
  strip3.setPixelColor(1, 255, 255, 0);
  strip3.show();
  delay(myDelay);
  strip4.setPixelColor(1, 255, 255, 0);
  strip4.show();
  delay(myDelay);
  strip5.setPixelColor(1, 255, 255, 0);
  strip5.show();
  delay(myDelay);
  strip6.setPixelColor(1, 255, 255, 0);
  strip6.show();
  delay(myDelay);
}


void go_eight(){
  strip.setPixelColor(0, 255, 0, 0);
  strip.show();
  delay(myDelay);
  strip2.setPixelColor(0, 255, 0, 0);
  strip2.show();
  delay(myDelay);
  strip3.setPixelColor(0, 255, 0, 0);
  strip3.show();
  delay(myDelay);
  strip4.setPixelColor(0, 255, 0, 0);
  strip4.show();
  delay(myDelay);
  strip5.setPixelColor(0, 255, 0, 0);
  strip5.show();
  delay(myDelay);
  strip6.setPixelColor(0, 255, 0, 0);
  strip6.show();
  delay(myDelay);
  
  strip6.setPixelColor(7, 143, 0, 255);
  strip6.show();
  delay(myDelay);
  }


void hide_colors(){
  strip.clear();
  strip.show();
  strip2.clear();
  strip2.show();
  strip3.clear();
  strip3.show();
  strip4.clear();
  strip4.show();
  strip5.clear();
  strip5.show();
  strip6.clear();
  strip6.show();
  delay(500);
}