Salve a tutti, mi spiego meglio, tempo fa ho realizzato un programma per comandare una striscia a led rgb, in pratica appena parte il colore è bianco, e variando i vari valori, dopo poco sfumano i colori passando dal verde acqua al verde al rosa rosso e cosi via. Ora mi chiedevo se fosse possibile inserire un pulsantino, dicendo nel programma che quando lo si preme si stoppa diciamo il ciclo. Esempio se è sul verde tendente al giallo e io lo premo mi si ferma li e non va avanti, e quando lo ripremo riparte. Vorrei aggiungere questa piccola cosa ma non saprei come fare. Utilizzo un Arduino Uno, una striscia led RGB comprata a poco su eBay. Se avete bisogno di altre informazione chiedetele pure spero di essere stato abbastanza chiaro.
Questo è il codice che ho usato:
int pin1 = 6; int pin2 = 5; int pin3 = 3;
int value3; int value2; int value1;
int x;
int y;
void setup(){
x = 10000;
y = 100;
// bianco
value1 = 255;
value2 = 255;
value3 = 255;
analogWrite(pin1, value1); //r
analogWrite(pin2, value2); //g
analogWrite(pin3, value3); //b
// migreazione all'azzurro
for (int x=255; x>=0; x--) {
value1 = x;
analogWrite(pin1, value1);
delay(y);
}
//azzurrro
delay(x);
}
void loop(){
//migrazione al verde
for (int z=255; z>=0; z--) {
value3 = z;
analogWrite(pin3, value3);
delay(y);
}
// verde
delay(x);
//migrazione al giallo
for (int x=0; x<255; x++) {
value1 = x;
analogWrite(pin1, value1);
delay(y);
}
// giallo
delay(x);
//migrazione al arancione
for (int y=255; y>=165; y--) {
value2 = y;
analogWrite(pin2, value2);
delay(y);
}
// arancione
delay(x);
//migrazione al rosso
for (int y=165; y>=0; y--) {
value2 = y;
analogWrite(pin2, value2);
delay(y);
}
// rosso
delay(x);
//migrazione al rosa
for (int z=0; z<=127; z++) {
value3 = z;
analogWrite(pin3, value3);
delay(y);
}
// rosa
delay(x);
//migrazione al magenta
for (int z=127; z<256; z++) {
value3 = z;
analogWrite(pin3, value3);
delay(y);
}
// magenta
delay(x);
//migrazione al viola
for (int x=255; x>=143; x--) {
value1 = x;
analogWrite(pin1, value1);
delay(y);
}
// viola
delay(x);
//migrazione al blu
for (int x=143; x>=0; x--) {
value1 = x;
analogWrite(pin1, value1);
delay(y);
}
// blu
delay(x);
//migrazione al azzurro
for (int y=0; y<256; y++) {
value2 = y;
analogWrite(pin2, value2);
delay(y);
}
// azzurro
delay(x);
}
Grazie per l'aiuto.