int PWM = 0;
int R = 1;
int G = 2;
int B = 3;
int START = 4;
int RGBVAR = 5;
int toff = 5;
int pwm = 0;
int pwm_set = 0;
int pwm_low = 50;
int pwm_mid = 125;
int pwm_max = 255;
int start = 0;
int rgbvar = 0;
int varcol = -1;
int col_set = 0;
void setup()
{
pinMode(START, INPUT);
pinMode(RGBVAR, INPUT);
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
pinMode(PWM, OUTPUT);
}
void loop(){
while(1){
rgbvar = digitalRead(RGBVAR); //se RGBVAR cambio colore 6 combinazioni
if(rgbvar == HIGH){
varcol = varcol + 1;
if(varcol > 20){
varcol = 0;
}
switch(varcol){
case(0):
col_set = 0;
pwm = pwm_max;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, LOW);
break;
case(1):
col_set = 1;
pwm = pwm_max;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(2):
col_set = 2;
pwm = pwm_max;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(3):
col_set = 3;
pwm = pwm_max;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(4):
col_set = 4;
pwm = pwm_max;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(5):
col_set = 5;
pwm = pwm_max;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
case(6):
col_set = 6;
pwm = pwm_max;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
case(7):
col_set = 0;
pwm = pwm_mid;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, LOW);
break;
case(8):
col_set = 1;
pwm = pwm_mid;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(9):
col_set = 2;
pwm = pwm_mid;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(10):
col_set = 3;
pwm = pwm_mid;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(11):
col_set = 4;
pwm = pwm_mid;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(12):
col_set = 5;
pwm = pwm_mid;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
case(13):
col_set = 6;
pwm = pwm_mid;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
case(14):
col_set = 0;
pwm = pwm_low;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, LOW);
break;
case(15):
col_set = 1;
pwm = pwm_low;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(16):
col_set = 2;
pwm = pwm_low;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(17):
col_set = 3;
pwm = pwm_low;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(18):
col_set = 4;
pwm = pwm_low;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(19):
col_set = 5;
pwm = pwm_low;
analogWrite(PWM, pwm); digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
case(20):
col_set = 6;
pwm = pwm_low;
analogWrite(PWM, pwm); digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
}
delay(500);
analogWrite(PWM, 0);
digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, LOW);
}
start = digitalRead(START);
if(start == HIGH){ //se start(sensore capacitivo)
RGB_VAR(col_set, pwm); // led accesi finchè il sensore non è più abilitato
while(1){
start = digitalRead(START);
if(start == LOW){
break;
}
}
delay(250);
break;
}
}
pwm_set = pwm;
while(1){
RGB_VAR(col_set, pwm_set);
pwm_set = pwm_set-1;
if(pwm_set < 0){
pwm_set = pwm;
RGB_VAR(col_set, 0);
break;
}
}
analogWrite(PWM, 0);
digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, LOW);
}
void RGB_VAR(int valrgb, int valpwm){
pwm_set = valpwm;
switch(valrgb){
case(0):
digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, LOW);
break;
case(1):
digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(2):
digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(3):
digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, LOW);
break;
case(4):
digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, HIGH);
break;
case(5):
digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
case(6):
digitalWrite(R, HIGH); digitalWrite(G, HIGH); digitalWrite(B, HIGH);
break;
}
analogWrite(PWM, valpwm);
delay(toff);
}