#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel pixels_3 = Adafruit_NeoPixel(3, 3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel pixels_35 = Adafruit_NeoPixel(35, 2, NEO_GRB + NEO_KHZ800);
int counter = 0 ;
int ROSE_RGB = 0;
int ROSE_RGB_t = 0;
int ROSE_RGB_r = 0;
int ROSE_RGB_g = 0;
int ROSE_RGB_b = 0;
int SUN_RGB = 0;
int SUN_RGB_t = 0;
int SUN_RGB_r = 0;
int SUN_RGB_g = 0;
int SUN_RGB_b = 0;
int STAR_white = 0;
int STAR_white_t = 0;
int STAR_white_tt = 10;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(A7));
pinMode(5, OUTPUT);
pinMode(A0, INPUT_PULLUP); // sun
pinMode(A1, INPUT_PULLUP); // star
pinMode(A2, INPUT_PULLUP); // rose
pinMode(A3, INPUT_PULLUP); // sun
pinMode(A4, INPUT_PULLUP); // sun
pinMode(A5, INPUT_PULLUP); // star
pinMode(7, INPUT_PULLUP); // star
pinMode(4, INPUT_PULLUP); // rose
pinMode(6, INPUT_PULLUP); // rose
pixels_3.begin();
pixels_35.begin();
}
void loop() {
if (digitalRead(A3) == 1 && digitalRead(A4) == 1) {sun_mode_0(analogRead(A2));}
if (digitalRead(A3) == 1 && digitalRead(A4) == 0) {sun_mode_1(analogRead(A2));}
if (digitalRead(A3) == 0 && digitalRead(A4) == 1) {sun_mode_2(analogRead(A2));}
if (digitalRead(A5) == 1 && digitalRead(7) == 1) {star_mode_0(analogRead(A1));}
if (digitalRead(A5) == 1 && digitalRead(7) == 0) {star_mode_1(analogRead(A1));}
if (digitalRead(A5) == 0 && digitalRead(7) == 1) {star_mode_2(analogRead(A1));}
if (digitalRead(4) == 1 && digitalRead(6) == 1) {rose_mode_0(analogRead(A0));}
if (digitalRead(4) == 1 && digitalRead(6) == 0) {rose_mode_1(analogRead(A0));}
if (digitalRead(4) == 0 && digitalRead(6) == 1) {rose_mode_2(analogRead(A0));}
}
void rose_mode_0(int j){
pixels_3.setBrightness(255);
ROSE_RGB_t += 1;
if (ROSE_RGB_t >= map (j,10,800,1,50)) {
ROSE_RGB_t = 0;
ROSE_RGB += 1;
}
if (ROSE_RGB > 1785){ROSE_RGB = ROSE_RGB - 1786;}
if (ROSE_RGB <=255) {ROSE_RGB_r = 255 ; ROSE_RGB_g = ROSE_RGB ;ROSE_RGB_b = 0;}
if (ROSE_RGB >255 && ROSE_RGB<= 510) {ROSE_RGB_r = 510-ROSE_RGB ; ROSE_RGB_g = 255 ;ROSE_RGB_b = 0;}
if (ROSE_RGB >510 && ROSE_RGB<= 765) {ROSE_RGB_r = 0 ; ROSE_RGB_g = 255 ;ROSE_RGB_b = ROSE_RGB-510;}
if (ROSE_RGB >765 && ROSE_RGB<= 1020) {ROSE_RGB_r = 0 ; ROSE_RGB_g = 1020-ROSE_RGB ;ROSE_RGB_b = 255;}
if (ROSE_RGB >1020 && ROSE_RGB<= 1275) {ROSE_RGB_r = ROSE_RGB-1020 ; ROSE_RGB_g = 0 ;ROSE_RGB_b = 255;}
if (ROSE_RGB >1275 && ROSE_RGB<= 1530 ){ROSE_RGB_r = 255; ROSE_RGB_g = ROSE_RGB-1275 ;ROSE_RGB_b = 255;}
if (ROSE_RGB >1530 && ROSE_RGB<= 1785 ){ROSE_RGB_r = 255; ROSE_RGB_g = 1785-ROSE_RGB ;ROSE_RGB_b = 1785-ROSE_RGB;}
for (int i = 0 ; i<3 ; ++i){
pixels_3.setPixelColor( i, ROSE_RGB_r, ROSE_RGB_g, ROSE_RGB_b); }
pixels_3.show();
}
void rose_mode_1(int j){
pixels_3.setBrightness(255);
if (j < 700) { ROSE_RGB_RGB(map (j,10,700,0,13)); }
if (j >= 700){ ROSE_RGB_RGB(13); }
for (int i = 0 ; i < 3 ; ++i){
pixels_3.setPixelColor( i, ROSE_RGB_r, ROSE_RGB_g, ROSE_RGB_b); }
pixels_3.show();
}
void rose_mode_2(int j){
ROSE_RGB_t += 1;
if (ROSE_RGB_t >= 10){ROSE_RGB_t = 0; ROSE_RGB +=1 ;}
if (ROSE_RGB >= 510) {ROSE_RGB = 0;
if (j < 700 ){
ROSE_RGB_RGB(map(j,0,700,0,13));
}
else{
ROSE_RGB_RGB(random(13));
}
}
for (int i = 0 ; i<3 ; ++i){
pixels_3.setPixelColor( i, ROSE_RGB_r, ROSE_RGB_g, ROSE_RGB_b); }
if (ROSE_RGB <= 255) {
pixels_3.setBrightness(ROSE_RGB);
}
if (ROSE_RGB > 255) {
pixels_3.setBrightness(510-ROSE_RGB);
}
pixels_3.show();
}
void star_mode_0(int k){
if (STAR_white_t <= 0){STAR_white_t = random(200,5000);STAR_white = STAR_white_t/2;}
STAR_white_t -= map(k,10,800,5,1);
if (STAR_white_t > STAR_white ){analogWrite(5,0);}
else{analogWrite(5,255);}
}
void star_mode_1(int k){
if ( k < 40){
analogWrite(5,0);}
if ( k >= 40){
analogWrite(5,map (k,40,800,0,255));
}
}
void star_mode_2(int k){
STAR_white_t += 1;
if (STAR_white_t > STAR_white_tt){STAR_white_t = 0; STAR_white += map(k,10,800,10,1) ; }
if (STAR_white >510 ){STAR_white = 0; }
if (STAR_white_t <=0 && STAR_white <= 0) {STAR_white_tt= random(10,20);}
if (STAR_white <= 255){analogWrite(5,STAR_white);}
}
void sun_mode_0(int l){
pixels_35.setBrightness(255);
SUN_RGB_t +=1 ;
if(SUN_RGB_t >=30){SUN_RGB_t = 0;
if (l < 100 ){
for (int i = 0 ; i<35 ; ++i){pixels_35.setPixelColor( i, 0, 0, 0); }
}
if (l >= 100 && l < 500 ){
for (int i = 0 ; i<35 ; ++i){ pixels_35.setPixelColor( i, map (l,100,500,0,50)*5, map (l,100,500,0,50)*5 , map (l,100,500,0,50)*5); }
}
if (l >= 500 ){
for (int i = 0 ; i<35 ; ++i){
SUN_RGB += 1530/35*(map(l,500,800,1,6));
if (SUN_RGB > 1530) {SUN_RGB -= 1531;}
if (SUN_RGB <= 255) {SUN_RGB_r = 0; SUN_RGB_g = 0 ; SUN_RGB_b = 0;}
if (SUN_RGB > 255 && SUN_RGB <= 510) {SUN_RGB_r = SUN_RGB - 255; SUN_RGB_g = SUN_RGB - 255 ; SUN_RGB_b = SUN_RGB - 255;}
if (SUN_RGB > 510 && SUN_RGB <= 765) {SUN_RGB_r = 255; SUN_RGB_g = 255 ; SUN_RGB_b = 255;}
if (SUN_RGB > 765 && SUN_RGB <= 1020) {SUN_RGB_r = 1020 - SUN_RGB ; SUN_RGB_g = 1020 - SUN_RGB ; SUN_RGB_b = 1020 - SUN_RGB ;}
if (SUN_RGB > 1020) {SUN_RGB_r = 0 ; SUN_RGB_g = 0 ; SUN_RGB_b = 0 ;}
pixels_35.setPixelColor( i, SUN_RGB_r, SUN_RGB_g, SUN_RGB_b);
}
}
}
pixels_35.show();
}
void sun_mode_1(int l){
pixels_35.setBrightness(255);
if (l < 700){
SUN_RGB_RGB(map(l,10,700,0,13));
for (int i = 0 ; i <35 ; ++i){
pixels_35.setPixelColor( i, SUN_RGB_r, SUN_RGB_g, SUN_RGB_b);
}
}
else{
SUN_RGB_t +=1 ;
if(SUN_RGB_t >=30){SUN_RGB_t = 0;
for (int i = 0 ; i<35 ; ++i){
SUN_RGB += 1530/35*(map(l,700,800,1,4));
if (SUN_RGB > 1530){SUN_RGB -= 1531;}
if (SUN_RGB <=255) {SUN_RGB_r = 255 ; SUN_RGB_g =0 ;SUN_RGB_b = 255 - SUN_RGB;}
if (SUN_RGB >255 && SUN_RGB<= 510) {SUN_RGB_r = 255 ; SUN_RGB_g = SUN_RGB- 255 ;SUN_RGB_b = 0;}
if (SUN_RGB >510 && SUN_RGB<= 765) {SUN_RGB_r = 765-SUN_RGB ; SUN_RGB_g = 255 ;SUN_RGB_b = 0;}
if (SUN_RGB >765 && SUN_RGB<= 1020) {SUN_RGB_r = 0 ; SUN_RGB_g = 255 ;SUN_RGB_b = SUN_RGB-765;}
if (SUN_RGB >1020 && SUN_RGB<= 1275) {SUN_RGB_r = 0 ; SUN_RGB_g = 1275-SUN_RGB ;SUN_RGB_b = 255;}
if (SUN_RGB >1275 && SUN_RGB<= 1530 ){SUN_RGB_r = SUN_RGB-1275; SUN_RGB_g = 0 ;SUN_RGB_b = 255;}
pixels_35.setPixelColor( i, SUN_RGB_r, SUN_RGB_g, SUN_RGB_b);
}
}
pixels_35.show(); }
}
void sun_mode_2(int l){
pixels_35.setBrightness(255);
SUN_RGB_t += 1;
if (SUN_RGB_t >= 5){SUN_RGB_t = 0; SUN_RGB +=1 ;}
if (SUN_RGB >= 510) {SUN_RGB = 0;
if (l < 700 ){SUN_RGB_RGB(map(l,10,700,0,13));}
if (l >= 700){SUN_RGB_RGB(random(13));}
}
for (int i = 0 ; i<35 ; ++i){
pixels_35.setPixelColor( i, SUN_RGB_r, SUN_RGB_g, SUN_RGB_b); }
if (SUN_RGB <= 255) {
pixels_35.setBrightness(SUN_RGB);
}
if (SUN_RGB > 255) {
pixels_35.setBrightness(510-SUN_RGB);
}
pixels_35.show();
}
void ROSE_RGB_RGB(int m ){
switch (m){
case 0 : ROSE_RGB_r = 255; ROSE_RGB_g = 255; ROSE_RGB_b = 255; break;
case 1 : ROSE_RGB_r = 255; ROSE_RGB_g = 0; ROSE_RGB_b = 0;break;
case 2 : ROSE_RGB_r = 255; ROSE_RGB_g = 80; ROSE_RGB_b = 0;break;
case 3 : ROSE_RGB_r = 255; ROSE_RGB_g = 150; ROSE_RGB_b = 0;break;
case 4 : ROSE_RGB_r = 255; ROSE_RGB_g = 255; ROSE_RGB_b = 0;break;
case 5 : ROSE_RGB_r = 125; ROSE_RGB_g = 255; ROSE_RGB_b = 0;break;
case 6 : ROSE_RGB_r = 0; ROSE_RGB_g = 255; ROSE_RGB_b = 0;break;
case 7 : ROSE_RGB_r = 0; ROSE_RGB_g = 255; ROSE_RGB_b = 125;break;
case 8 : ROSE_RGB_r = 0; ROSE_RGB_g = 255; ROSE_RGB_b = 255;break;
case 9 : ROSE_RGB_r = 0; ROSE_RGB_g = 125; ROSE_RGB_b = 255;break;
case 10 : ROSE_RGB_r = 0; ROSE_RGB_g = 0; ROSE_RGB_b = 255;break;
case 11 : ROSE_RGB_r = 125; ROSE_RGB_g = 0; ROSE_RGB_b = 255;break;
case 12 : ROSE_RGB_r = 255; ROSE_RGB_g = 0; ROSE_RGB_b = 255;break;
case 13 : ROSE_RGB_r = 255; ROSE_RGB_g = 125; ROSE_RGB_b = 255;break;
}
}
void SUN_RGB_RGB(int n ){
switch (n){
case 0 : SUN_RGB_r = 255; SUN_RGB_g = 255; SUN_RGB_b = 255; break;
case 1 : SUN_RGB_r = 255; SUN_RGB_g = 0; SUN_RGB_b = 0;break;
case 2 : SUN_RGB_r = 255; SUN_RGB_g = 80; SUN_RGB_b = 0;break;
case 3 : SUN_RGB_r = 255; SUN_RGB_g = 150; SUN_RGB_b = 0;break;
case 4 : SUN_RGB_r = 255; SUN_RGB_g = 255; SUN_RGB_b = 0;break;
case 5 : SUN_RGB_r = 125; SUN_RGB_g = 255; SUN_RGB_b = 0;break;
case 6 : SUN_RGB_r = 0; SUN_RGB_g = 255; SUN_RGB_b = 0;break;
case 7 : SUN_RGB_r = 0; SUN_RGB_g = 255; SUN_RGB_b = 125;break;
case 8 : SUN_RGB_r = 0; SUN_RGB_g = 255; SUN_RGB_b = 255;break;
case 9 : SUN_RGB_r = 0; SUN_RGB_g = 125; SUN_RGB_b = 255;break;
case 10 : SUN_RGB_r = 0; SUN_RGB_g = 0; SUN_RGB_b = 255;break;
case 11 : SUN_RGB_r = 125; SUN_RGB_g = 0; SUN_RGB_b = 255;break;
case 12 : SUN_RGB_r = 255; SUN_RGB_g = 0; SUN_RGB_b = 255;break;
case 13 : SUN_RGB_r = 255; SUN_RGB_g = 125; SUN_RGB_b = 255;break;
}
}