unsigned long postit1;//variabile che gestisce il tempo
int stato = 0;
void setup() {
Serial.begin(115200);
// put your setup code here, to run once:
pinMode(4, OUTPUT);//LED apertura
pinMode(5, OUTPUT);//LED chiusura
pinMode(16, INPUT_PULLUP); //pulsante apertura
pinMode(17, INPUT_PULLUP); //pulsante chiusura
pinMode(18, INPUT_PULLUP); //fine corsa aperto
pinMode(19, INPUT_PULLUP); //fine corsa chiuso
}
void loop() {
switch(stato){
case 0:
chiuso();
break;
case 1:
apertura();
break;
case 2:
aperto();
break;
case 3:
chiusura();
break;
}
}
void chiuso () { //chiuso fino ad INPUT di apertura
if (! digitalRead(16)){
Serial.println("apertura");
digitalWrite(4, HIGH);//LED apertura acceso
delay(300);
stato = 1;
}
}
void apertura () { //si apre fino a raggiungere il F.C.
if (! digitalRead(18)){
Serial.println("aperto");
digitalWrite(4, LOW);//LED apertura spento
delay(300);
postit1 = millis();//inizio timer
stato = 2;
}
if (!digitalRead(17)){
Serial.println("mi sto richiudendo");
digitalWrite(5, HIGH);//LED chiusura acceso
digitalWrite(4, LOW);//LED apertura spento
delay(300);
stato = 3;
}
}
void aperto () { //aperto in attesa di INPUT di chiusura
if (! digitalRead(17)){
Serial.println("chiusura");
digitalWrite(5, HIGH);//LED apertura acceso
delay(300);
stato = 3;
}
if ((millis()-postit1)>5000){
Serial.println("mi sto richiudendo");
digitalWrite(5, HIGH);//LED chiusura acceso
stato = 3;
}
}
void chiusura () { //si chiude fino a raggiungere il F.C.
if (! digitalRead(19)){
Serial.println("chiuso");
digitalWrite(5,LOW);//LED chiusura spento
delay(300);
stato = 0;
}
if (!digitalRead(16)){
Serial.println("mi sto riaprendo");
digitalWrite(4, HIGH);//LED apertura acceso
digitalWrite(5, LOW);//LED chiusura spento
delay(300);
stato = 1;
}
}
Chiusura 5
Apertura 4
A. 16
C. 17
F.C.18
F.C.19
PETTINEEEEEE
Stato:
0=chiuso
1=apertura
2=aperto
3=chiusura