Παράθεση:
Αρχική Δημοσίευση από nt7561
Αυτό πως γίνεται?
|
Κώδικας:
int WindowSize = 5000;// χρόνος σε millisecond 5000 = 5sec
float setpoint = 23.0; //στόχος θερμοκρασίας
float offset = 0.2; //κενό +-0.2 από το στόχο θερμοκρασίας για να μην ανάβει κάθε τρεις και λίγο
unsigned long windowStartTime;
void setup()
{
windowStartTime = millis();
}
void loop()
{
if (tempW <= stepoint+offset) Windowsize = 5000;
else windowsize = 0;
/************************************************
* turn the output pin on/off
************************************************/
unsigned long now = millis();
if(now - windowStartTime>WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
if(Output > now - windowStartTime) digitalWrite(RelayPin,HIGH);
else digitalWrite(RelayPin,LOW);
}
-------------------------
Αυτό το loop λέει στο ρελε να ανοίγει τουλάχιστον για 5 δευτερόλεπτα. αν η αλλαγή στη θερμοκρασία δεν έχει επιτευχθεί στα 5 δευτερόλεπτα μεγαλώνει το παράθυρο σε κομμάτια των 5 δευτερολεπτων χωρίς να κλείσει το ρελε.
μόνο του δεν λειτουργεί, θέλει και τον μέσο όρο που έγραψα ποιο πάνω..
Σε αυτό το ποστ
http://www.aquatek.gr/vb/showpost.ph...1&postcount=58 έχω ανεβάσει πρόγραμμα που έχω φτιάξει μπορεί να σου φανεί χρήσιμο σε τπτ.. ειναι πειραγμένα κομμάτια του jarduino χωρίς το κομμάτι της οθόνης αφής