Σελίδα 3 από 4 ΠρώτηΠρώτη 1 2 3 4 ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 21 έως 30 από 33

Θέμα: ΒΟΗΘΕΙΑ ΜΕ ΤΟΝ ΚΩΔΙΚΑ ΧΡΟΝΟΥ ARDUINO

  1. #21
    Μέλος Το avatar του χρήστη SeAfasia
    Όνομα
    SV3IRG Dinos
    Εγγραφή
    Sep 2012
    Περιοχή
    Άργος.
    Μηνύματα
    3.363

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από keap Εμφάνιση μηνυμάτων
    Καλημέρα παιδιά,να ευχαριστήσω τον dalai και τον manolena,για τον χρόνο που διαθέσατε.
    Και SavKok σ'ευχαριστώ και πάλι για ότι κάνεις.απλά σε ρωτάω για να κατανοήσω λίγο τον κώδικα που μου έγραψες.
    dalai σ'ευχαριστώ για τον κώδικα και για τον χρόνο που ξόδεψες.
    manolena και το θάρρος να πέρνεις πάντα.
    Θα κάνω δοκιμές παιδιά και θα σας πω αποτελέσματα.
    μην ξεχάσεις να κάνεις add την library στο arduino Κων/ντινε που σου έδωσε ο Manolena οκ;

    0 Not allowed! Not allowed!

  2. #22
    Μέλος
    Όνομα
    Κωνσταντίνος
    Εγγραφή
    Jan 2015
    Περιοχή
    Πέραμα
    Μηνύματα
    83

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από manolena Εμφάνιση μηνυμάτων
    Έχω να προτείνω κι εγώ κάτι:

    Χρησιμοποίησε τη βιβλιοθήκη CountUpDownTimer που κάνει όλους τους υπολογισμούς και βάλε αυτό τον κώδικα:

    Κώδικας:
    #include <LiquidCrystal.h>
    #include<CountUpDownTimer.h>
    // ==================================
    #define _60min     60  //=====>ΒΑΛΕ ΕΔΩ ΠΟΣΑ ΛΕΠΤΑ ΘΕΛΕΙΣ 
    #define pumpPin1   6
    #define pumpPin2   7
    #define Arrow  1
    // ==================================
    boolean relay1State=true;
    boolean relay2State=false;
    byte RIGHT_ARROW[8] = {
            B00000,
        B00100,
        B11110,
        B11111,
        B11110,
        B00100,
        B00000,    
        B00000
    };
    // ==================================
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    CountUpDownTimer Timer60Minutes(DOWN);
    // ==================================
    void setup()
    {
      pinMode(pumpPin1, OUTPUT);
      pinMode(pumpPin2, OUTPUT);
      lcd.begin(16,2);
      lcd.createChar(Arrow, RIGHT_ARROW);
      lcd.setCursor(0, 0);
      lcd.print(" Control System ");
      lcd.setCursor(5, 1);
      lcd.print("2 Pump");
      delay(5000);
      lcd.clear();
      Timer60Minutes.SetTimer(0,_60min,0);
      Timer60Minutes.StartTimer();
      digitalWrite(pumpPin1, HIGH);
      digitalWrite(pumpPin2, LOW);
      lcd.setCursor(6,0);
      lcd.write(Arrow);
      lcd.print("PUMP 1 ON ");
      lcd.setCursor(6,1);
      lcd.print(" PUMP 2 OFF");
    }
    // ==================================
    void loop()
    {
      Timer60Minutes.Timer();
      displayTime60Minutes(0,0,Timer60Minutes);
      
      if(Timer60Minutes.TimeCheck(0,0,0) == true) 
      {
        Timer60Minutes.SetTimer(0,_60min,0);
        relay1State = !relay1State;
        relay2State = !relay2State;
        if((relay1State == true) && (relay2State == false))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ:   
    
          //=================//  
          //59:59 >PUMP 1 ON // 
          //       PUMP 2 OFF//
          //=================//
    
          digitalWrite(pumpPin1, HIGH);
          digitalWrite(pumpPin2, LOW);
          lcd.setCursor(6,0);
          lcd.write(Arrow);
          lcd.print("PUMP 1 ON ");
          lcd.setCursor(6,1);
          lcd.print(" PUMP 2 OFF");
        }
        else if((relay1State == false) && (relay2State == true))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ: 
      
          //=================//  
          //59:59  PUMP 1 OFF// 
          //      >PUMP 2 ON //
          //=================//
    
          digitalWrite(pumpPin1, LOW);
          digitalWrite(pumpPin2, HIGH);
          lcd.setCursor(6,0);
          lcd.print(" PUMP 1 OFF");
          lcd.setCursor(6,1);      lcd.write(Arrow);
          lcd.print("PUMP 2 ON ");
        }
      }  
    }
    // ==================================
    void displayTime60Minutes(int col, int row, CountUpDownTimer)//
    {
      int minutes, seconds;
    
      minutes = Timer60Minutes.ShowMinutes();
      seconds = Timer60Minutes.ShowSeconds();
      lcd.setCursor(col, row);
      if(minutes < 10) lcd.print("0");
      lcd.print(minutes,DEC);
      lcd.print(":");
      if(seconds < 10) lcd.print("0");
      lcd.print(seconds,DEC);  
    }
    // ==================================
    Πήρα το θάρρος και έκανα μερικές μετατροπές γρήγορα, χωρίς δοκιμή. Έχω την εντύπωση οτι δουλεύει όμως.

    EDIT: Του έβαλα και ένα σκέρτσο, όταν σου οπλίζει το εκάστοτε ρελέ, δίπλα φαίνεται και ένα δεξί βελάκι
    Το δοκίμασα μου έβγαζε ένα σφάλμα και απ'ότι κατάλαβα ήτανε γιατί δεν είχα την
    συγκεκριμένη βιβλιοθήκη περασμένη μέσα,την αποθήκευσα,και τώρα έχω ξεκινήση την δοκιμή μέχρι στιγμής
    αυτός ο τρόπος λειτουργεί και παράλληλα προσπαθώ να καταλάβω και να φτιάξω και τους κώδικες που
    μου έστειλαν ο SavKok και ο dalai για να κάνω δοκιμές και με τους άλλους κώδικες.
    Έτσι μαθαίνω κιόλας.
    Ευχαριστώ πολύ για τον χρόνο σου.

    0 Not allowed! Not allowed!

  3. #23
    Μέλος
    Όνομα
    Κωνσταντίνος
    Εγγραφή
    Jan 2015
    Περιοχή
    Πέραμα
    Μηνύματα
    83

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από SavKok Εμφάνιση μηνυμάτων
    Ποιες εντολες Κωστα, γραψτ'ες μια μια να σου πουμε
    Τώρα κοιτάω τον κώδικα που μου έστειλες και προσπαθώ να τον φτιάξω για την δουλειά που τον θέλω,
    αλλά δεν θα προλάβω σήμερα γιατί σε λίγο θα φύγω πάλι για δουλειά,θα τον συνεχίσω πάλι το βράδυ.
    Έκανα αλλαγή από delay(10) σε delay(1000) και το δοκίμασα σε serial.print και πάλι με την ίδια ταχύτητα κατεβαίνει ο χρόνος.
    Μήπως χρειάζεται να αλλάξω και κάτι άλλο?
    Ευχαριστώ πολύ.Για οτιδήποτε άλλο θα ξαναστείλω.

    Δικιά μου η βλακεία συγνώμη εγώ έκανα λάθος αντί να αλλάξω και τις δύο εντολές delay(10) άλλαξα μόνο την μία.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη keap : 12-11-15 στις 13:07

  4. #24
    Μέλος
    Όνομα
    Κωνσταντίνος
    Εγγραφή
    Jan 2015
    Περιοχή
    Πέραμα
    Μηνύματα
    83

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από SeAfasia Εμφάνιση μηνυμάτων
    μην ξεχάσεις να κάνεις add την library στο arduino Κων/ντινε που σου έδωσε ο Manolena οκ;
    Εκεί την πάτησα και νόμιζα ότι έκανα βλακεία,αλλά τελικά δεν είχα την βιβλιοθήκη μέσα.Ευχαριστώ

    0 Not allowed! Not allowed!

  5. #25
    Μέλος
    Όνομα
    Κωνσταντίνος
    Εγγραφή
    Jan 2015
    Περιοχή
    Πέραμα
    Μηνύματα
    83

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από manolena Εμφάνιση μηνυμάτων
    Έχω να προτείνω κι εγώ κάτι:

    Χρησιμοποίησε τη βιβλιοθήκη CountUpDownTimer που κάνει όλους τους υπολογισμούς και βάλε αυτό τον κώδικα:

    Κώδικας:
    #include <LiquidCrystal.h>
    #include<CountUpDownTimer.h>
    // ==================================
    #define _60min     60  //=====>ΒΑΛΕ ΕΔΩ ΠΟΣΑ ΛΕΠΤΑ ΘΕΛΕΙΣ 
    #define pumpPin1   6
    #define pumpPin2   7
    #define Arrow  1
    // ==================================
    boolean relay1State=true;
    boolean relay2State=false;
    byte RIGHT_ARROW[8] = {
            B00000,
        B00100,
        B11110,
        B11111,
        B11110,
        B00100,
        B00000,    
        B00000
    };
    // ==================================
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    CountUpDownTimer Timer60Minutes(DOWN);
    // ==================================
    void setup()
    {
      pinMode(pumpPin1, OUTPUT);
      pinMode(pumpPin2, OUTPUT);
      lcd.begin(16,2);
      lcd.createChar(Arrow, RIGHT_ARROW);
      lcd.setCursor(0, 0);
      lcd.print(" Control System ");
      lcd.setCursor(5, 1);
      lcd.print("2 Pump");
      delay(5000);
      lcd.clear();
      Timer60Minutes.SetTimer(0,_60min,0);
      Timer60Minutes.StartTimer();
      digitalWrite(pumpPin1, HIGH);
      digitalWrite(pumpPin2, LOW);
      lcd.setCursor(6,0);
      lcd.write(Arrow);
      lcd.print("PUMP 1 ON ");
      lcd.setCursor(6,1);
      lcd.print(" PUMP 2 OFF");
    }
    // ==================================
    void loop()
    {
      Timer60Minutes.Timer();
      displayTime60Minutes(0,0,Timer60Minutes);
      
      if(Timer60Minutes.TimeCheck(0,0,0) == true) 
      {
        Timer60Minutes.SetTimer(0,_60min,0);
        relay1State = !relay1State;
        relay2State = !relay2State;
        if((relay1State == true) && (relay2State == false))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ:   
    
          //=================//  
          //59:59 >PUMP 1 ON // 
          //       PUMP 2 OFF//
          //=================//
    
          digitalWrite(pumpPin1, HIGH);
          digitalWrite(pumpPin2, LOW);
          lcd.setCursor(6,0);
          lcd.write(Arrow);
          lcd.print("PUMP 1 ON ");
          lcd.setCursor(6,1);
          lcd.print(" PUMP 2 OFF");
        }
        else if((relay1State == false) && (relay2State == true))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ: 
      
          //=================//  
          //59:59  PUMP 1 OFF// 
          //      >PUMP 2 ON //
          //=================//
    
          digitalWrite(pumpPin1, LOW);
          digitalWrite(pumpPin2, HIGH);
          lcd.setCursor(6,0);
          lcd.print(" PUMP 1 OFF");
          lcd.setCursor(6,1);      lcd.write(Arrow);
          lcd.print("PUMP 2 ON ");
        }
      }  
    }
    // ==================================
    void displayTime60Minutes(int col, int row, CountUpDownTimer)//
    {
      int minutes, seconds;
    
      minutes = Timer60Minutes.ShowMinutes();
      seconds = Timer60Minutes.ShowSeconds();
      lcd.setCursor(col, row);
      if(minutes < 10) lcd.print("0");
      lcd.print(minutes,DEC);
      lcd.print(":");
      if(seconds < 10) lcd.print("0");
      lcd.print(seconds,DEC);  
    }
    // ==================================
    Πήρα το θάρρος και έκανα μερικές μετατροπές γρήγορα, χωρίς δοκιμή. Έχω την εντύπωση οτι δουλεύει όμως.

    EDIT: Του έβαλα και ένα σκέρτσο, όταν σου οπλίζει το εκάστοτε ρελέ, δίπλα φαίνεται και ένα δεξί βελάκι
    Κάτι πήγε στραβά εδώ ξεκίνησε κανονικά ο χρόνος αλλά όταν μηδένισε ξανάρχισε με την PUMP 1 ON - PUMP 2 OFF και άρχισε πάλι να μετράει και το βελάκι έδειχνε πάλι τι 1 ανοικτή

    0 Not allowed! Not allowed!

  6. #26
    Μέλος
    Όνομα
    Κωνσταντίνος
    Εγγραφή
    Jan 2015
    Περιοχή
    Πέραμα
    Μηνύματα
    83

    Προεπιλογή

    SavKok
    Δικιά μου η βλακεία συγνώμη εγώ έκανα λάθος αντί να αλλάξω και τις δύο εντολές delay(10) άλλαξα μόνο την μία.

    0 Not allowed! Not allowed!

  7. #27
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από keap Εμφάνιση μηνυμάτων
    Κάτι πήγε στραβά εδώ ξεκίνησε κανονικά ο χρόνος αλλά όταν μηδένισε ξανάρχισε με την PUMP 1 ON - PUMP 2 OFF και άρχισε πάλι να μετράει και το βελάκι έδειχνε πάλι τι 1 ανοικτή
    Μια χαρά μου δουλεύει εμένα, έφτιαξα μόνο τα διαστήματα γιατί έτρωγε έναν χαρακτήρα στα δεξιά της οθόνης. Δεν καταλαβαίνω, μια χαρά μου πάει, κάνει κανονικά rollover στο χρόνο αυτό που θέλεις.

    Κώδικας:
    #include <LiquidCrystal.h>    //η βιβλιοθήκη για οθόνες LCD χαρακτήρων, https://github.com/arduino/Arduino/tree/master/libraries/LiquidCrystal
    #include<CountUpDownTimer.h>  //η βιβλιοθήκη για τον timer, https://github.com/AndrewMascolo/CountUpDownTimer
    // ==================================
    #define _60min     1  //=====>ΒΑΛΕ ΕΔΩ ΠΟΣΑ ΛΕΠΤΑ ΘΕΛΕΙΣ ΝΑ ΕΙΝΑΙ Ο ΚΥΚΛΟΣ
    #define pumpPin1   6  //ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΟΥ ΨΗΦΙΑΚΟΥ PIN ΓΙΑ ΕΞΟΔΟ ΑΝΤΛΙΑΣ 1
    #define pumpPin2   7  //ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΟΥ ΨΗΦΙΑΚΟΥ PIN ΓΙΑ ΕΞΟΔΟ ΑΝΤΛΙΑΣ 2
    #define Arrow  1      //ΔΩΣΕ ΟΡΙΣΜΟ ΘΕΣΗΣ ΓΙΑ ΤΟ ΕΙΚΟΝΙΔΙΟ ARROW ΣΤΗΝ ΜΝΗΜΗ USER ΧΑΡΑΚΤΗΡΩΝ ΤΗΣ LCD
    // ==================================
    //https://www.arduino.cc/en/Reference/BooleanVariables
    boolean relay1State=true;  //boolean ΠΟΥ ΔΙΝΕΙ ΚΑΤΑΣΤΑΣΗ ΑΝΤΛΙΑΣ 1
    boolean relay2State=false; //boolean ΠΟΥ ΔΙΝΕΙ ΚΑΤΑΣΤΑΣΗ ΑΝΤΛΙΑΣ 2
    byte RIGHT_ARROW[8] = {    //ΔΕΣ https://www.arduino.cc/en/Reference/Array
            B00000,
        B00100,
        B11110,
        B11111,
        B11110,
        B00100,
        B00000,    
        B00000
    };
    // ==================================
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  //ΟΡΙΣΜΟΣ ΚΑΙ ΑΡΧΙΚΟΠΟΙΗΣΗ ΟΘΟΝΗΣ, ΔΕΣ ΒΙΒΛΙΟΘΗΚΗ ΓΙΑ PIN ASSIGNEMENTS
    CountUpDownTimer Timer60Minutes(DOWN);//ΟΡΙΣΜΟΣ ΚΑΙ ΑΡΧΙΚΟΠΟΙΗΣΗ TIMER, ΔΕΣ ΒΙΒΛΙΟΘΗΚΗ 
    // ==================================
    void setup()                              //ΑΡΧΙΚΟΠΟΙΗΣΗ
    {
      pinMode(pumpPin1, OUTPUT);              //ΚΑΘΟΡΙΣΜΟΣ PIN ΑΝΤΛΙΑΣ 1 ΩΣ ΕΞΟΔΟΣ
      pinMode(pumpPin2, OUTPUT);              //ΚΑΘΟΡΙΣΜΟΣ PIN ΑΝΤΛΙΑΣ 2 ΩΣ ΕΞΟΔΟΣ
      lcd.begin(16,2);                        //ΕΚΚΙΝΗΣΗ ΟΘΟΝΗΣ
      lcd.createChar(Arrow, RIGHT_ARROW);     //ΔΗΜΙΟΥΡΓΙΑ CUSTOM CHARACTER ΣΤΗ ΘΕΣΗ 1 ΤΗΣ ΜΝΗΜΗΣ ΟΘΟΝΗΣ
      lcd.setCursor(0, 0);                    //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΠΑΝΩ ΓΡΑΜΜΗ 0, ΘΕΣΗ 0 (ΠΑΝΩ ΑΡΙΣΤΕΡΑ)
      lcd.print(" Control System ");          //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
      lcd.setCursor(5, 1);                    //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΚΑΤΩ ΓΡΑΜΜΗ 1, ΘΕΣΗ 5
      lcd.print("2 Pump");                    //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
      delay(5000);                            //ΕΙΣΑΓΩΓΗ ΚΑΘΥΣΤΕΡΗΣΗς 5 ΔΕΥΤΕΡΟΛΕΠΤΩΝ (5000mS)
      lcd.clear();                            //ΚΑΘΑΡΙΣΜΟΣ ΟΘΟΝΗΣ
      Timer60Minutes.SetTimer(0,_60min,0);    //ΠΡΟΡΥΘΜΙΣΗ TIMER ΓΙΑ 0 ΩΡΕΣ, 59 ΛΕΠΤΑ, 59 ΔΕΥΤΕΡΟΛΕΠΤΑ
      Timer60Minutes.StartTimer();            //ΕΚΚΙΝΗΣΗ TIMER
      digitalWrite(pumpPin1, HIGH);           //H ANTLIA 1 EINAI ON, 
      digitalWrite(pumpPin2, LOW);            //H ANTLIA 2 EINAI OFF
      lcd.setCursor(6,0);                     //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΠΑΝΩ ΓΡΑΜΜΗ 0, ΘΕΣΗ 6
      lcd.write(Arrow);                       //ΤΥΠΩΝΕΙ ΒΕΛΑΚΙ
      lcd.print("PUMP1 ON ");                 //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
      lcd.setCursor(6,1);                     //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΚΑΤΩ ΓΡΑΜΜΗ 1, ΘΕΣΗ 6
      lcd.print(" PUMP2 OFF");                //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
    }
    // ==================================
    void loop()                                                //ΚΥΡΙΟΣ ΒΡΟΓΧΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
    {
      Timer60Minutes.Timer();
      displayTime60Minutes(0,0,Timer60Minutes);
      
      if(Timer60Minutes.TimeCheck(0,0,0) == true) 
      {
        Timer60Minutes.SetTimer(0,_60min,0);
        relay1State = !relay1State;
        relay2State = !relay2State;
        if((relay1State == true) && (relay2State == false))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ:   
    
    
          //=================//  
          //59:59 >PUMP1 ON // 
          //       PUMP2 OFF//
          //=================//
    
    
          digitalWrite(pumpPin1, HIGH);
          digitalWrite(pumpPin2, LOW);
          lcd.setCursor(6,0);
          lcd.write(Arrow);
          lcd.print("PUMP1 ON ");
          lcd.setCursor(6,1);
          lcd.print(" PUMP2 OFF");
        }
        else if((relay1State == false) && (relay2State == true))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ: 
      
          //=================//  
          //59:59  PUMP1 OFF// 
          //      >PUMP2 ON //
          //=================//
    
    
          digitalWrite(pumpPin1, LOW);
          digitalWrite(pumpPin2, HIGH);
          lcd.setCursor(6,0);
          lcd.print(" PUMP1 OFF");
          lcd.setCursor(6,1);      lcd.write(Arrow);
          lcd.print("PUMP2 ON ");
        }
      }  
    }
    // ==================================
    void displayTime60Minutes(int col, int row, CountUpDownTimer)//
    {
      int minutes, seconds;
    
    
      minutes = Timer60Minutes.ShowMinutes();
      seconds = Timer60Minutes.ShowSeconds();
      lcd.setCursor(col, row);
      if(minutes < 10) lcd.print("0");
      lcd.print(minutes,DEC);
      lcd.print(":");
      if(seconds < 10) lcd.print("0");
      lcd.print(seconds,DEC);  
    }
    // ==================================

    0 Not allowed! Not allowed!

  8. #28
    Μέλος Το avatar του χρήστη herctrap
    Όνομα
    Ηρακλής
    Εγγραφή
    May 2010
    Περιοχή
    Αιγάλεω / Πυλος
    Μηνύματα
    1.971

    Προεπιλογή

    ναι αλλά άμα το κάνεις με dleay η μια ώρα στο τέλος θα είναι μια ώρα και κάτι δευτερολεπτα
    γιατί τα serial.kati kai ta if παίρνουν χρόνο

    0 Not allowed! Not allowed!

  9. #29
    Μέλος
    Όνομα
    Κωνσταντίνος
    Εγγραφή
    Jan 2015
    Περιοχή
    Πέραμα
    Μηνύματα
    83

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από manolena Εμφάνιση μηνυμάτων
    Μια χαρά μου δουλεύει εμένα, έφτιαξα μόνο τα διαστήματα γιατί έτρωγε έναν χαρακτήρα στα δεξιά της οθόνης. Δεν καταλαβαίνω, μια χαρά μου πάει, κάνει κανονικά rollover στο χρόνο αυτό που θέλεις.

    Κώδικας:
    #include <LiquidCrystal.h>    //η βιβλιοθήκη για οθόνες LCD χαρακτήρων, https://github.com/arduino/Arduino/tree/master/libraries/LiquidCrystal
    #include<CountUpDownTimer.h>  //η βιβλιοθήκη για τον timer, https://github.com/AndrewMascolo/CountUpDownTimer
    // ==================================
    #define _60min     1  //=====>ΒΑΛΕ ΕΔΩ ΠΟΣΑ ΛΕΠΤΑ ΘΕΛΕΙΣ ΝΑ ΕΙΝΑΙ Ο ΚΥΚΛΟΣ
    #define pumpPin1   6  //ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΟΥ ΨΗΦΙΑΚΟΥ PIN ΓΙΑ ΕΞΟΔΟ ΑΝΤΛΙΑΣ 1
    #define pumpPin2   7  //ΔΩΣΕ ΤΟΝ ΑΡΙΘΜΟ ΤΟΥ ΨΗΦΙΑΚΟΥ PIN ΓΙΑ ΕΞΟΔΟ ΑΝΤΛΙΑΣ 2
    #define Arrow  1      //ΔΩΣΕ ΟΡΙΣΜΟ ΘΕΣΗΣ ΓΙΑ ΤΟ ΕΙΚΟΝΙΔΙΟ ARROW ΣΤΗΝ ΜΝΗΜΗ USER ΧΑΡΑΚΤΗΡΩΝ ΤΗΣ LCD
    // ==================================
    //https://www.arduino.cc/en/Reference/BooleanVariables
    boolean relay1State=true;  //boolean ΠΟΥ ΔΙΝΕΙ ΚΑΤΑΣΤΑΣΗ ΑΝΤΛΙΑΣ 1
    boolean relay2State=false; //boolean ΠΟΥ ΔΙΝΕΙ ΚΑΤΑΣΤΑΣΗ ΑΝΤΛΙΑΣ 2
    byte RIGHT_ARROW[8] = {    //ΔΕΣ https://www.arduino.cc/en/Reference/Array
            B00000,
        B00100,
        B11110,
        B11111,
        B11110,
        B00100,
        B00000,    
        B00000
    };
    // ==================================
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  //ΟΡΙΣΜΟΣ ΚΑΙ ΑΡΧΙΚΟΠΟΙΗΣΗ ΟΘΟΝΗΣ, ΔΕΣ ΒΙΒΛΙΟΘΗΚΗ ΓΙΑ PIN ASSIGNEMENTS
    CountUpDownTimer Timer60Minutes(DOWN);//ΟΡΙΣΜΟΣ ΚΑΙ ΑΡΧΙΚΟΠΟΙΗΣΗ TIMER, ΔΕΣ ΒΙΒΛΙΟΘΗΚΗ 
    // ==================================
    void setup()                              //ΑΡΧΙΚΟΠΟΙΗΣΗ
    {
      pinMode(pumpPin1, OUTPUT);              //ΚΑΘΟΡΙΣΜΟΣ PIN ΑΝΤΛΙΑΣ 1 ΩΣ ΕΞΟΔΟΣ
      pinMode(pumpPin2, OUTPUT);              //ΚΑΘΟΡΙΣΜΟΣ PIN ΑΝΤΛΙΑΣ 2 ΩΣ ΕΞΟΔΟΣ
      lcd.begin(16,2);                        //ΕΚΚΙΝΗΣΗ ΟΘΟΝΗΣ
      lcd.createChar(Arrow, RIGHT_ARROW);     //ΔΗΜΙΟΥΡΓΙΑ CUSTOM CHARACTER ΣΤΗ ΘΕΣΗ 1 ΤΗΣ ΜΝΗΜΗΣ ΟΘΟΝΗΣ
      lcd.setCursor(0, 0);                    //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΠΑΝΩ ΓΡΑΜΜΗ 0, ΘΕΣΗ 0 (ΠΑΝΩ ΑΡΙΣΤΕΡΑ)
      lcd.print(" Control System ");          //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
      lcd.setCursor(5, 1);                    //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΚΑΤΩ ΓΡΑΜΜΗ 1, ΘΕΣΗ 5
      lcd.print("2 Pump");                    //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
      delay(5000);                            //ΕΙΣΑΓΩΓΗ ΚΑΘΥΣΤΕΡΗΣΗς 5 ΔΕΥΤΕΡΟΛΕΠΤΩΝ (5000mS)
      lcd.clear();                            //ΚΑΘΑΡΙΣΜΟΣ ΟΘΟΝΗΣ
      Timer60Minutes.SetTimer(0,_60min,0);    //ΠΡΟΡΥΘΜΙΣΗ TIMER ΓΙΑ 0 ΩΡΕΣ, 59 ΛΕΠΤΑ, 59 ΔΕΥΤΕΡΟΛΕΠΤΑ
      Timer60Minutes.StartTimer();            //ΕΚΚΙΝΗΣΗ TIMER
      digitalWrite(pumpPin1, HIGH);           //H ANTLIA 1 EINAI ON, 
      digitalWrite(pumpPin2, LOW);            //H ANTLIA 2 EINAI OFF
      lcd.setCursor(6,0);                     //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΠΑΝΩ ΓΡΑΜΜΗ 0, ΘΕΣΗ 6
      lcd.write(Arrow);                       //ΤΥΠΩΝΕΙ ΒΕΛΑΚΙ
      lcd.print("PUMP1 ON ");                 //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
      lcd.setCursor(6,1);                     //Ο ΚΑΡΣΟΡΑΣ ΣΕ ΚΑΤΩ ΓΡΑΜΜΗ 1, ΘΕΣΗ 6
      lcd.print(" PUMP2 OFF");                //ΤΥΠΩΝΕΙ ΜΗΝΥΜΑ
    }
    // ==================================
    void loop()                                                //ΚΥΡΙΟΣ ΒΡΟΓΧΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
    {
      Timer60Minutes.Timer();
      displayTime60Minutes(0,0,Timer60Minutes);
      
      if(Timer60Minutes.TimeCheck(0,0,0) == true) 
      {
        Timer60Minutes.SetTimer(0,_60min,0);
        relay1State = !relay1State;
        relay2State = !relay2State;
        if((relay1State == true) && (relay2State == false))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ:   
    
    
          //=================//  
          //59:59 >PUMP1 ON // 
          //       PUMP2 OFF//
          //=================//
    
    
          digitalWrite(pumpPin1, HIGH);
          digitalWrite(pumpPin2, LOW);
          lcd.setCursor(6,0);
          lcd.write(Arrow);
          lcd.print("PUMP1 ON ");
          lcd.setCursor(6,1);
          lcd.print(" PUMP2 OFF");
        }
        else if((relay1State == false) && (relay2State == true))
        {
          //ΤΟ LCD ΘΑ ΦΑΙΝΕΤΑΙ ΕΤΣΙ: 
      
          //=================//  
          //59:59  PUMP1 OFF// 
          //      >PUMP2 ON //
          //=================//
    
    
          digitalWrite(pumpPin1, LOW);
          digitalWrite(pumpPin2, HIGH);
          lcd.setCursor(6,0);
          lcd.print(" PUMP1 OFF");
          lcd.setCursor(6,1);      lcd.write(Arrow);
          lcd.print("PUMP2 ON ");
        }
      }  
    }
    // ==================================
    void displayTime60Minutes(int col, int row, CountUpDownTimer)//
    {
      int minutes, seconds;
    
    
      minutes = Timer60Minutes.ShowMinutes();
      seconds = Timer60Minutes.ShowSeconds();
      lcd.setCursor(col, row);
      if(minutes < 10) lcd.print("0");
      lcd.print(minutes,DEC);
      lcd.print(":");
      if(seconds < 10) lcd.print("0");
      lcd.print(seconds,DEC);  
    }
    // ==================================
    Ναι αλλά πρόσεξα ότι έχεις βάλει το <PUMP ON 1 - PUMP 2 OFF > και στο void setup και στο void loop και γι αυτό πιστεύω ότι μου παίζει δύο φορές την ίδια εντολή.Κοιταξέ το και πέσμου αν κάνω κάπου λάθος εγώ.
    Ευχαριστώ και για την ανάλυση.Μ'άρεσε που μου ανάλυσες και τον κώδικα που έγραψα εγώ είσαι φοβερός.Αλλά σίγουρα αφιέρωσες πολύ χρόνο και πάλι ευχαριστώ.

    0 Not allowed! Not allowed!

  10. #30
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Στη setup() βάζω >PUMP1 ON και PUMP2 OFF για να αρχικοποιηθούν τα ρελέ των αντλιών. Εκτός και αν δεν θες να είναι κανένα ενεργό, οπότε τα γυρίζεις και τα δύο OFF. Στη loop() μετά γίνεται η εναλλαγή τους κάθε μια ώρα.

    0 Not allowed! Not allowed!

Σελίδα 3 από 4 ΠρώτηΠρώτη 1 2 3 4 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. ARDUINO GSM ΒΟΗΘΕΙΑ ΜΕ ΚΩΔΙΚΑ
    By keap in forum Μικροελεγκτές
    Απαντήσεις: 46
    Τελευταίο Μήνυμα: 29-06-18, 10:16
  2. arduino bug σε κωδικα...βοηθεια
    By gourtz in forum Μικροελεγκτές
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 09-02-17, 15:11
  3. βοηθεια με κωδικα arduino
    By krithisg in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 10-03-15, 13:20

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας