GRAZIE GRAZIE GRAZIE MILLE per l enorme aiuto che mi hai, da solo non credo proprio che c e l avrei fatta,
funziona benissimo
se potesse tornare utile ad altri utenti:
#define verde1 13
#define rosso1 12
#define verde2 11
#define rosso2 10
#define pulsante 7
int val = 0; // conserva lo stato del pin di input
void setup(){
pinMode (verde1, OUTPUT);
pinMode (rosso1,OUTPUT);
pinMode (verde2,OUTPUT);
pinMode (rosso2,OUTPUT);
pinMode (pulsante, INPUT);
digitalWrite(pulsante,HIGH);
}
void loop() {
unsigned long uscita_programmata = millis() + 3000; //3 secondi
boolean pressione_continua = true;
do {
if (digitalRead(pulsante) == HIGH) { //oppure LOW, dipende dalla logica di funzionamento del tuo pulsante
pressione_continua = false;
break;
}
} while (millis() <= uscita_programmata);
if (pressione_continua == true) {
digitalWrite(verde2, LOW);
digitalWrite(rosso2, HIGH);
digitalWrite(rosso1, HIGH);
delay (5000);
digitalWrite(verde1, HIGH);
digitalWrite(rosso2,HIGH);
digitalWrite(rosso1,LOW);
delay(8000);
// ....sensore premuto per tutto l'intervallo
} else {digitalWrite(rosso1,HIGH);
digitalWrite(verde2,HIGH);
digitalWrite(verde1,LOW);
digitalWrite(rosso2, LOW);
// ....dito staccato prima del tempo
}
}