Ciao a tutti, finalmente, dopo tanti lavoretti di riparazione fra casa mia e vicini di casa posso riprendere lo studio del programma anemomentro.
due pulsanti (apertura e chiusura tenda) lavorano come volevo e
Quindi, se premo il tasto per meno di un secondo, il motore rimane attivo fino al raggiungimento del fine corsa (questa parte ancora non
il motore si ferma quando lo rilascio.
se la tenda si sta aprendo e premo il tasto di chiusura, deve fermarsi tutto e vice versa, poi se voglio fare un azione devo ripremere un tasto.
Come posso fare? :-)
int tasto_AP = 4; //pin tasto apertura int tasto_CH = 5; //pin tasto chiusura int rele_AP = 6; //pin rele apertura int rele_CH = 7; //pin rele chiusura
int stato_AP; //memorizza stato tasto apertura int conteggio_AP; //memorizza stato conteggio apertura int stato_CH; //memorizza stato tasto chiusura int conteggio_CH; //memorizza stato conteggio chiusura
long t0_AP; // memorizzano i tempi per il long t_AP; // calcolo del tempo premuto long t0_CH; long t_CH;
void setup() { pinMode(tasto_AP, INPUT); pinMode(rele_AP, OUTPUT); pinMode(tasto_CH, INPUT); pinMode(rele_CH, OUTPUT);
stato_AP = 0; //imposta lo stato iniziale del pulsante di apertura conteggio_AP = LOW; //imposta lo stato iniziale del conteggio tempo
stato_CH = 0; //imposta lo stato iniziale del pulsante di chiusura conteggio_CH = LOW; //imposta lo stato iniziale del conteggio tempo }
void loop(){ stato_AP = digitalRead(tasto_AP); stato_CH = digitalRead(tasto_CH);
if ((conteggio_AP == LOW) && (stato_AP == HIGH)) { conteggio_AP = HIGH; t0_AP = millis(); digitalWrite(rele_AP, HIGH); //Serial.println("Premuto tasto APERTURA");
}if ((conteggio_AP == HIGH) && (stato_AP == LOW)) { conteggio_AP = LOW; t_AP = millis() - t0_AP;
if (t_AP 1000) digitalWrite(rele_AP, LOW); }
}if ((conteggio_CH == LOW) && (stato_CH == HIGH)) { conteggio_CH = HIGH; t0_CH = millis(); digitalWrite(rele_CH, HIGH);
}if ((conteggio_CH == HIGH) && (stato_CH == LOW)) { conteggio_CH = LOW; t_CH = millis() - t0_CH;
if (t_CH 1000) digitalWrite(rele_CH, LOW); }
} }