Εμφάνιση αποτελεσμάτων : 1 έως 8 από 8

Θέμα: arduino?

  1. #1
    Νέο Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Sep 2009
    Περιοχή
    Ηράκλειο
    Μηνύματα
    27

    Προεπιλογή arduino?

    Στο παρακάτω sketch προσπαθώ να ενεργοποιείτε το alarm κάθε δεύτερη μέρα παρόλα αυτά για κάποιο λόγο δεν γίνεται.
    Χρησιμοποιώ όπως θα δείτε την bool skipToday και μετά το void loop() AlarmAction
    if (skipToday) {
    skipToday = false; //come back tomorrow
    } else {
    Serial.println("Turned on potisma");
    skipToday = true; //not your day tomorrow
    }
    Παρακάτω έχω όλο τον κώδικα. Κάποιος καμμιά ιδέα;
    Κώδικας:
     
    #include <TimeAlarms.h> #include <Wire.h> #include <Time.h> #include <DS1307RTC.h> bool skipToday = false; void setup() { Serial.begin(9600); setSyncProvider(RTC.get); // the function to get the time from the RTC if(timeStatus()!= timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); digitalWrite(52, HIGH); digitalWrite(50, HIGH); digitalWrite(48, HIGH); digitalWrite(46, HIGH); digitalWrite(44, HIGH); digitalWrite(42, HIGH); digitalWrite(40, HIGH); digitalWrite(38, HIGH); //definition of the relays as outputs pinMode(52, OUTPUT); pinMode(50, OUTPUT); pinMode(48, OUTPUT); pinMode(46, OUTPUT); pinMode(44, OUTPUT); pinMode(42, OUTPUT); pinMode(40, OUTPUT); pinMode(38, OUTPUT); delay(4000); //Check that all relays are inactive at Reset Alarm.alarmRepeat(7,10,0,AlarmAction); // 8:30am every day //Here you can only set the time, this repeats every day. } void loop() { digitalClockDisplay(); Alarm.delay(1000); // wait one second between clock display } void AlarmAction () { if (skipToday) { skipToday = false; //come back tomorrow } else { Serial.println("Turned on potisma"); skipToday = true; //not your day tomorrow } // functions to be called when an alarm triggers: Serial.println("POTISMA"); digitalWrite(52, LOW); //RELAY 1 ON delay(4*60*1000); //wait 4 min digitalWrite(52, HIGH); //RELAY 1 OFF digitalWrite(50, LOW); //RELAY 2 ON delay(4*60*1000); //wait 4 min digitalWrite(50, HIGH); //RELAY 2 OFF digitalWrite(48, LOW); //RELAY 3 ON delay(5*60*1000); //wait 5 min digitalWrite(48, HIGH); //RELAY 3 OFF digitalWrite(46, LOW); //RELAY 4 ON delay(5*60*1000); //wait 5 min digitalWrite(46, HIGH); //RELAY 4 OFF digitalWrite(44, LOW); //RELAY 5 ON delay(5*60*1000); //wait 5 min digitalWrite(44, HIGH); //RELAY 5 OFF digitalWrite(42, LOW); //RELAY 6 ON delay(5*60*1000); //wait 5 min digitalWrite(42, HIGH); //RELAY 6 OFF digitalWrite(40, LOW); //RELAY 7 ON delay(5*60*1000); //wait 5 min digitalWrite(40, HIGH); //RELAY 7 OFF digitalWrite(38, LOW); //RELAY 8 ON delay(5*60*1000); //wait 5 min digitalWrite(38, HIGH); //RELAY 8 OFF } void digitalClockDisplay() { // digital clock display of the time Serial.print(hour()); printDigits(minute()); printDigits(second()); Serial.print("-"); Serial.print(day()); Serial.print("/"); Serial.print(month()); Serial.print("/"); Serial.print(year()); Serial.println(); delay(30000); } void printDigits(int digits) { Serial.print(":"); if(digits < 10) Serial.print('0'); Serial.print(digits); }

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη lepouras : 18-04-17 στις 14:22

  2. #2
    Μέλος
    Όνομα
    Γιάννης
    Εγγραφή
    Feb 2011
    Περιοχή
    Αθήνα
    Μηνύματα
    167

    Προεπιλογή

    Μιας και δεν γραφεις λεπτομεριες για το κυκλωμα πρεπει να κανω μια ερωτηση.
    Εχεις πλακετακι για το Real Time Clock (DS1307RTC) εκτος του Arduino ετσι ????
    Αν ανοιξεις το Serial Monitor σου γραφει κατι ????

    0 Not allowed! Not allowed!

  3. #3
    Μέλος
    Όνομα
    Νίκος
    Εγγραφή
    Feb 2014
    Περιοχή
    Μοσχάτο
    Μηνύματα
    606

    Προεπιλογή

    Αν υποθέσουμε ότι όλα τα αλλά είναι σωστά θα έβαζα τη αγκύλη που "τελειώνει" το else μετά το τελευταίο digitalwrite και όχι εκεί που είναι.
    Επισης την δήλωση του τι είναι το κάθε pin την κάνεις πριν γράψεις/διαβάσεις κάτι. Εσυ το έχεις ανάποδα.

    0 Not allowed! Not allowed!
    Mastroxalastis / Μαστροχαλαστής
    https://www.youtube.com/channel/UCOWjSR-OOc-ZBCT61EX_lJg

  4. #4
    Νέο Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Sep 2009
    Περιοχή
    Ηράκλειο
    Μηνύματα
    27

    Προεπιλογή

    Το πρόβλημά μου είναι ότι δεν κάνει skip την πρώτη μέρα. Στο serial monitor, ναι γράφει αυτά που πρέπει και την ώρα του RTC. Την αγκύλη την άλλαξα χθές γιατί εκεί πρέπει να είναι το πρόβλημα και το φόρτωσα έτσι όπως το βλέπετε(ήταν στο τέλος). Μάλλον μου δούλεψε γιατί το έχω βάλει από χθες να ''τρέχει'' με πρωινή ώρα (7¨00) να δουλέψει, και δεν έκανε τίποτα. Άρα αύριο θα ξέρω.(Τι κακό και αυτό να περιμένω 2 μέρες για να το διαπιστώσω!)Θα σας ενημερώσω.

    0 Not allowed! Not allowed!

  5. #5
    Νέο Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Sep 2009
    Περιοχή
    Ηράκλειο
    Μηνύματα
    27

    Post

    Αναβάθμισα λίγο το πρόβλημα να ανοίγουν τα ρελέ ανά 2 μέρες. Το παρακάτω μου εξασφαλίζει ότι και σε περίπτωση διακοπής, θα επαναυπολογίζει μονές ή ζυγές μέρες. Η απορία τώρα είναι:
    1.Το Alarm.alarmRepeat, να γίνει Alarm.alarmOnce;(πιστεύω δε θα υπάρχει διαφορά)
    2.Η υπορουτίνα

    if (todayIsOdd)
    {
    Serial.println("Today is an ODD day");
    }
    else
    {
    Serial.println("Today is an EVEN day");
    Alarm.alarmRepeat(13,58,0,AlarmAction);
    }
    πρέπει να μπει στο loop για να εκτελείτε καθημερινά; Ή χρειάζεται να γίνεται κάποιου είδους reset τα μεσάνυκτα;

    Κώδικας:
    #include <TimeAlarms.h>
    #include <Wire.h> 
    #include <Time.h>
    #include <DS1307RTC.h>
    
    unsigned long noOfSeconds;
    int noOfWholeDays;
    int todayIsDay;
    bool todayIsOdd;
    
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
      setSyncProvider(RTC.get);   // the function to get the time from the RTC
      if(timeStatus()!= timeSet) 
         Serial.println("Unable to sync with the RTC");
      else
         Serial.println("RTC has set the system time"); 
     digitalWrite(52, HIGH);
     digitalWrite(50, HIGH);
     digitalWrite(48, HIGH);
     digitalWrite(46, HIGH);
     digitalWrite(44, HIGH);
     digitalWrite(42, HIGH);
     digitalWrite(40, HIGH);
     digitalWrite(38, HIGH); 
    
      //definition of the relays as outputs   
      pinMode(52, OUTPUT);
      pinMode(50, OUTPUT);
      pinMode(48, OUTPUT);
      pinMode(46, OUTPUT);
      pinMode(44, OUTPUT);
      pinMode(42, OUTPUT);
      pinMode(40, OUTPUT);
      pinMode(38, OUTPUT);
    
      noOfSeconds = RTC.get();
      noOfWholeDays = noOfSeconds / 86400;
      todayIsDay = noOfWholeDays + 1;
      if (todayIsDay % 2 == 0)
      {
        todayIsOdd = false;
      }
      else
      {
        todayIsOdd = true;
      }
      Serial.println(noOfSeconds);
      Serial.println(noOfWholeDays);
      Serial.println(todayIsDay);
     if (todayIsOdd)
      {
        Serial.println("Today is an ODD day");
      }
      else
      {
        Serial.println("Today is an EVEN day");
          Alarm.alarmRepeat(13,58,0,AlarmAction);
      }
      Serial.println(" ");
    }
    
    void loop() {
      digitalClockDisplay();
      Alarm.delay(1000); // wait one second between clock display
      }
    void AlarmAction () {
       
      // functions to be called when an alarm triggers:
      Serial.println("POTISMA");  
      digitalWrite(52, LOW); //RELAY 1 ON
      delay(300000);               //wait 4 min 
      digitalWrite(52, HIGH);  //RELAY 1 OFF
      digitalWrite(50, LOW); //RELAY 2 ON
      delay(300000);               //wait  4 min
      digitalWrite(50, HIGH);  //RELAY 2 OFF
      digitalWrite(48, LOW); //RELAY 3 ON
      delay(400000);               //wait 5 min
      digitalWrite(48, HIGH);  //RELAY 3 OFF
      digitalWrite(46, LOW); //RELAY 4 ON
      delay(400000);               //wait 5 min
      digitalWrite(46, HIGH);  //RELAY 4 OFF
      digitalWrite(44, LOW); //RELAY 5 ON
      delay(400000);               //wait 5 min
      digitalWrite(44, HIGH);  //RELAY 5 OFF
      digitalWrite(42, LOW); //RELAY 6 ON
      delay(400000);               //wait 5 min
      digitalWrite(42, HIGH);  //RELAY 6 OFF
      digitalWrite(40, LOW); //RELAY 7 ON
      delay(5000);               //wait 5 min
      digitalWrite(40, HIGH);  //RELAY 7 OFF
      digitalWrite(38, LOW); //RELAY 8 ON
      delay(5000);               //wait 5 min
      digitalWrite(38, HIGH);  //RELAY 8 OFF
    }
    void digitalClockDisplay()
    {
      // digital clock display of the time
      Serial.print(hour());
      printDigits(minute());
      printDigits(second());
      Serial.print("-");
      Serial.print(day());
      Serial.print("/");
      Serial.print(month());
      Serial.print("/");
      Serial.print(year()); 
      Serial.println(); 
      delay(30000);
    }
    void printDigits(int digits)
    {
      Serial.print(":");
      if(digits < 10)
        Serial.print('0');
      Serial.print(digits);
    }

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη lepouras : 18-04-17 στις 14:21

  6. #6
    Νέο Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Sep 2009
    Περιοχή
    Ηράκλειο
    Μηνύματα
    27

    Προεπιλογή

    Μετά από δοκιμές, ο κώδικας λειτουργεί όπως πρέπει. Ενεργοποιείται ανά δύο μέρες και ανοιγοκλείνοντας τα ρελέ στους χρόνους που ορίζονται. Επίσης χρησιμοποιώ και ένα διακόπτη για να τεστάρω τα ρελέ.
    Κώδικας:
    #include <Wire.h>
    #include "RTClib.h"
    #include <DS1307RTC.h>
    #include <Time.h>
    #include <TimeAlarms.h>
    
    RTC_DS1307 rtc;
    
    int inPin = 11;   // choose the input pin (for a pushbutton)
    int val = 0;     // variable for reading the pin status
    
    unsigned long noOfSeconds;
    int noOfWholeDays;
    int todayIsDay;
    bool todayIsOdd;
    
    void setup () {
      Serial.begin(9600);
    
      setSyncProvider(RTC.get);   // the function to get the time from the RTC
      if(timeStatus()!= timeSet)
         Serial.println("Unable to sync with the RTC");
      else
         Serial.println("RTC has set the system time");
         
     digitalWrite(2, HIGH);
     digitalWrite(3, HIGH);
     digitalWrite(4, HIGH);
     digitalWrite(5, HIGH);
     digitalWrite(6, HIGH);
     digitalWrite(7, HIGH);
     digitalWrite(8, HIGH);
     digitalWrite(9, HIGH);
    
      //definition of the relays as outputs   
      pinMode(2, OUTPUT);
      pinMode(3, OUTPUT);
      pinMode(4, OUTPUT);
      pinMode(5, OUTPUT);
      pinMode(6, OUTPUT);
      pinMode(7, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(9, OUTPUT);
      pinMode(inPin, INPUT);    // declare pushbutton as input
      pinMode(13, OUTPUT);
      
       Alarm.alarmRepeat(0,01,0, WhatDay);  //  every day
    }
     
    
    void loop () {
      digitalClockDisplay();
      Alarm.delay(1000); // wait one second between clock display
      val = digitalRead(inPin);  // read input value
      if (val == 1) {         // check if the input is HIGH (button released)
        button();  // turn LED OFF
      }
      else
      {
       digitalWrite(13, LOW);
      }
      }
      
    void WhatDay () {
      noOfSeconds = RTC.get();
      noOfWholeDays = noOfSeconds / 86400;
      todayIsDay = noOfWholeDays + 1;
      if (todayIsDay % 2 == 0)
      {
        todayIsOdd = false;
      }
      else
      {
        todayIsOdd = true;
      }
      Serial.println(noOfSeconds);
      Serial.println(noOfWholeDays);
      Serial.println(todayIsDay);
     if (todayIsOdd)
      {
        Serial.println("Today is an ODD day");
      }
      else
      {
        Serial.println("Today is an EVEN day");
        Alarm.alarmOnce(0,10,0,AlarmAction);
      }
      Serial.println(" ");
    }
    void button () {
       // functions to be called when an alarm triggers:
      Serial.println("TEST POTISMATOS");
      digitalWrite(13, HIGH);
      digitalWrite(2, LOW); //RELAY 1 ON
      delay(1000L*60L*1L);               //wait 1 min
      digitalWrite(2, HIGH);  //RELAY 1 OFF
      digitalWrite(3, LOW); //RELAY 2 ON
      delay(1000L*60L*1L);               //wait  1 min
      digitalWrite(3, HIGH);  //RELAY 2 OFF
      digitalWrite(4, LOW); //RELAY 3 ON
      delay(1000L*60L*1L);               //wait 1 min
      digitalWrite(4, HIGH);  //RELAY 3 OFF
      digitalWrite(5, LOW); //RELAY 4 ON
      delay(1000L*60L*1L);               //wait 1 min
      digitalWrite(5, HIGH);  //RELAY 4 OFF
      digitalWrite(6, LOW); //RELAY 5 ON
      delay(1000L*60L*1L);               //wait 1 min
      digitalWrite(6, HIGH);  //RELAY 5 OFF
      digitalWrite(7, LOW); //RELAY 6 ON
      delay(1000L*60L*1L);               //wait 1 min
      digitalWrite(7, HIGH);  //RELAY 6 OFF
      digitalWrite(8, LOW); //RELAY 7 ON
      delay(5000);               //wait 5 min
      digitalWrite(8, HIGH);  //RELAY 7 OFF
      digitalWrite(9, LOW); //RELAY 8 ON
      delay(5000);               //wait 5 min
      digitalWrite(9, HIGH);  //RELAY 8 OFF
    }
    void AlarmAction () {
       
      // functions to be called when an alarm triggers:
      Serial.println("POTISMA"); 
      digitalWrite(2, LOW); //RELAY 1 ON
      delay(1000L*60L*4L);               //wait 4 min
      digitalWrite(2, HIGH);  //RELAY 1 OFF
      digitalWrite(3, LOW); //RELAY 2 ON
      delay(1000L*60L*4L);               //wait  4 min
      digitalWrite(3, HIGH);  //RELAY 2 OFF
      digitalWrite(4, LOW); //RELAY 3 ON
      delay(1000L*60L*5L);               //wait 5 min
      digitalWrite(4, HIGH);  //RELAY 3 OFF
      digitalWrite(5, LOW); //RELAY 4 ON
      delay(1000L*60L*5L);               //wait 5 min
      digitalWrite(5, HIGH);  //RELAY 4 OFF
      digitalWrite(6, LOW); //RELAY 5 ON
      delay(1000L*60L*5L);               //wait 5 min
      digitalWrite(6, HIGH);  //RELAY 5 OFF
      digitalWrite(7, LOW); //RELAY 6 ON
      delay(1000L*60L*5L);               //wait 5 min
      digitalWrite(7, HIGH);  //RELAY 6 OFF
      digitalWrite(8, LOW); //RELAY 7 ON
      delay(5000);               //wait 5 min
      digitalWrite(8, HIGH);  //RELAY 7 OFF
      digitalWrite(9, LOW); //RELAY 8 ON
      delay(5000);               //wait 5 min
      digitalWrite(9, HIGH);  //RELAY 8 OFF
    }
    void digitalClockDisplay(){
      // digital clock display of the time
      Serial.print(hour());
      printDigits(minute());
      printDigits(second());
      Serial.println(); 
    }
    
    void printDigits(int digits){
      Serial.print(":");
      if(digits < 10)
        Serial.print('0');
      Serial.print(digits);
    }

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη lepouras : 18-04-17 στις 14:19

  7. #7
    Συντονιστής Το avatar του χρήστη lepouras
    Όνομα
    Γιανννης
    Εγγραφή
    Jan 2011
    Περιοχή
    ΚΑΙΣΑΡΙΑΝΗ
    Μηνύματα
    7.017

    Προεπιλογή

    Κώστα για να βάλεις τον κώδικα μέσα σε παράθυρο να γράφεις στην αρχή του κώδικα [CODE] γράφεις τον κωδικά σου και στο τέλος [/CΟDΕ] (για να μην κάνει παράθυρο τώρα έβαλα ελληνικούς χαρακτήρες στο Ο και Ε )ή πας στον επεξεργαστή κειμένου και πατάς το σύμβολο <> στο μενού και σου εκτυπώνει αυτόματα το προηγούμενο και βάζεις ανάμεσα τον κώδικα.

    0 Not allowed! Not allowed!
    «Η Ιστορία διδάσκει πως ουδείς διδάσκεται απ’ αυτήν».
    Ποτέ δεν νικάς έναν ηλίθιο ,θα σε ρίξει στο επίπεδό του και θα σε κερδίσει λόγω πείρας.

    www.drakotrypa.gr Να σκέφτεσαι σαν άνθρωπος της δράσης,και να δρας σαν άνθρωπος της σκέψης...

  8. #8
    Νέο Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Sep 2009
    Περιοχή
    Ηράκλειο
    Μηνύματα
    27

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από lepouras Εμφάνιση μηνυμάτων
    Κώστα για να βάλεις τον κώδικα μέσα σε παράθυρο να γράφεις στην αρχή του κώδικα [CODE] γράφεις τον κωδικά σου και στο τέλος [/CΟDΕ] (για να μην κάνει παράθυρο τώρα έβαλα ελληνικούς χαρακτήρες στο Ο και Ε )ή πας στον επεξεργαστή κειμένου και πατάς το σύμβολο <> στο μενού και σου εκτυπώνει αυτόματα το προηγούμενο και βάζεις ανάμεσα τον κώδικα.
    Σε ευχαριστώ για το σχόλιο. Το έκανα μάλλον λάθο,ς γιατί τα έβαζα αλλά δεν έπιασε.

    0 Not allowed! Not allowed!

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

  1. arduino help
    By giorgosm3 in forum Μικροελεγκτές
    Απαντήσεις: 49
    Τελευταίο Μήνυμα: 27-03-17, 10:16
  2. arduino + sd
    By kostasmantzios in forum Μικροελεγκτές
    Απαντήσεις: 31
    Τελευταίο Μήνυμα: 26-03-16, 22:36
  3. arduino
    By lefteris_gr in forum Μικροελεγκτές
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 23-11-13, 01:07
  4. arduino
    By Γιαννάκης 7 in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 30-12-12, 18:36
  5. arduino
    By chrisn in forum Μικροελεγκτές
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 27-06-12, 02:44

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

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