Salve a tutti, sapreste dirmi come faccio a far ripetere all'infinito una serie di comandi dentro un if? mi spiego meglio, ho scritto questo sketch (guardate la riga in cui c'e scritto ( if ((pulsantegioco==HIGH) and (gioco==0)) ) vorrei che dopo che le lampade fanno una serie di accensioni e spegnimenti alla fine del ciclo ricominci di nuovo daccapo a rifare quel ciclo finchè non ripremo il "pulsantegioco". mi è stato detto che devo utilizzare il comando while ma anche googlando non riesco a capirlo.
qui lo sketch:
int pulsanteverde;
int pulsanterosso;
int pulsanteblu;
int verde=0;
int rosso=0;
int blu=0;
int gioco=0;
int pulsantegioco;
void setup() {
pinMode(13, OUTPUT); //verde
pinMode(12, OUTPUT); //rosso
pinMode(11, OUTPUT); //blu
pinMode(10, INPUT); // verde
pinMode(9, INPUT); // rosso
pinMode(8, INPUT); // blu
pinMode(7, INPUT); // rosso + verde=giallo
pinMode(6, INPUT); // blu + verde=azzurro
pinMode(5, INPUT); // blu + rosso=viola
pinMode(4, INPUT); // blu + rosso + verde=bianco
pinMode(3,INPUT); //gioco di luci
}
void loop() {
pulsanteverde=digitalRead(10);
pulsanterosso=digitalRead(9);
pulsanteblu=digitalRead(8);
pulsantegioco=digitalRead(3);
if ((pulsanteverde==HIGH) and (verde==0)) {
digitalWrite(13,HIGH);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
verde=1; // verde passa ad acceso
delay(300);
}
else if ((pulsanteverde==HIGH) and (verde==0))
{
digitalWrite(13,LOW);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
verde=0;
delay(300);
}
else if ((pulsanteverde==HIGH) and (verde==1))
{
digitalWrite(13,LOW);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
verde=0;
delay(300);
}
if ((pulsanterosso==HIGH) and (rosso==0))
{
digitalWrite(12,HIGH);
digitalWrite(11,LOW);
digitalWrite(13,LOW);
rosso=1;
delay(300);
}
else if ((pulsanterosso==HIGH) and (rosso==1))
{
digitalWrite(12,LOW);
digitalWrite(11,LOW);
digitalWrite(13,LOW);
rosso=0;
delay(300);
}
if ((pulsanteblu==HIGH) and (blu==0))
{
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
blu=1;
delay(300);
}
else if ((pulsanteblu==HIGH) and (blu==1))
{
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
blu=0;
delay(300);
}
if ((pulsantegioco==HIGH) and (gioco==0))
{
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
delay(200);
digitalWrite(11,HIGH);
digitalWrite(12,LOW); //verde13 rosso12 blu11
delay(200);
digitalWrite(12,HIGH); //viola 12+11
delay(200);
digitalWrite(13,HIGH);
digitalWrite(11,LOW);
delay(200);
digitalWrite(12,LOW);
digitalWrite(11,HIGH);
delay(200);
digitalWrite(13,HIGH);
digitalWrite(12,HIGH);
digitalWrite(11,HIGH);
gioco=1;
}
else if ((pulsantegioco==HIGH) and (gioco==1))
{
digitalWrite(13,LOW);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
gioco=0;
delay(300);
}
}