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

Θέμα: Arduino και Relay

  1. #1
    Μέλος
    Όνομα
    Λευτέρης
    Εγγραφή
    Jan 2011
    Περιοχή
    Αθήνα
    Μηνύματα
    80

    Προεπιλογή Arduino και Relay

    Καλησπέρα σ’ όλους.
    Θα ήθελα την σκέψη και την βοήθεια σας σχετικά με μια εφαρμογή που προσπαθώ να κάνω. Έχω ένα Arduino nano, ένα Ethernet, ένα rtc DS3231 και ένα relay. Σκοπός μου είναι να ανοίξω ένα relay, να πάρω και να αποθηκεύσω από το rtc έναv στιγμιαίο χρόνο (π.χ σε μορφή “12:00:00”), να τον προσθέσω με μια σταθερά που του ορίζω (DelayTime) και να τον συγκρίνω με τον πραγματικό χρόνο για να κλείσει το relay. Δεν θέλω να χρησιμοποιήσω εντολές όπως millis, while και for οι οποίες “παγώνουν” το πρόγραμμα.


    Κάθε βοήθεια δεκτήΕυχαριστώ

    #include <DS3231.h>
    #include <Ethernet.h>
    #include <SPI.h>
    #include <Wire.h>

    DS3231 rtc(SDA, SCL);
    int CH1 = 5;
    String DelayTime ="00:02:00";
    String readString;
    byte ip[] = {192, 168, 1, 99 };
    byte gateway[] = {192, 168, 1, 1 };
    byte subnet[] = {255, 255, 255, 0 };
    byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    EthernetServer server = EthernetServer(80);

    void setup() {
    Serial.begin(9600);
    Wire.begin();
    rtc.begin();
    pinMode(CH1, OUTPUT);
    Ethernet.begin(mac, ip, gateway, subnet);
    server.begin();
    Serial.print("Server started at ");
    Serial.println(Ethernet.localIP());

    }

    void loop() {
    // listen for incoming clients
    EthernetClient client = server.available();
    if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
    if (client.available()) {
    char c = client.read();
    Serial.write(c);
    if (c == '\n' && currentLineIsBlank) {
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println("Connection: close");
    client.println("Refresh: 10");
    client.println();
    client.println("<!DOCTYPE HTML>");
    client.println("<html>");
    client.print("<center><input type=submit value=ON style=width:100px;height:45px onClick=location.href='/?on~'>");
    digitalWrite(CH1, HIGH);
    if(readString.indexOf('~') >0)
    { rtc.getTimeStr();
    digitalWrite(CH1, LOW);
    }
    client.println("</html>");
    break;
    }
    if (c == '\n') {currentLineIsBlank = true;}
    else if (c != '\r') {currentLineIsBlank = false;}
    }
    }
    delay(1);
    client.stop();
    Serial.println("client disconnected");
    }
    }

    0 Not allowed! Not allowed!

  2. #2
    Μέλος
    Όνομα
    Γιωργος
    Εγγραφή
    May 2009
    Περιοχή
    United Kingdom
    Μηνύματα
    83

    Προεπιλογή

    Καλησπερα,

    δυστηχως δεν ξερω να σε καθοδηγησω για το πως θα το κανεις αυτο με τον IDE του arduino αλλα μπορεις να ψάξεις πως να χειρίζεσαι τα περιφεριακα συστήματα όπως τους Timer που εχεις διαθέσιμους.

    O Atmega328P που εχει ο nano διαθέτει:

    -Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
    -One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
    -Real Time Counter with Separate Oscillator




    Με αυτα τα αρκουδίνο βρε παιδια καταντήσαμε να μήν διαβάζουμε ούτε τα datasheet τα οποία τα γράφουν όλα!


    Φιλικά
    Γιώργος

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη Nemmesis
    Όνομα
    Παναγιωτης
    Εγγραφή
    Jun 2006
    Περιοχή
    Πτολεμαιδα
    Μηνύματα
    3.299

    Προεπιλογή

    η millis δεν "παγώνει" το πρόγραμμα καθόλου όπως λες... έναν timer διαβάζει όλο και όλο...
    πάντως το μόνο που μπορώ να σκεφτώ χωρίς απλά να να κοιτάς αν έφτασε η ώρα που πρέπει να αλλάξει κατάσταση το ρελε είναι να σεταρεις κάθε φορά τα alarm μέσα στο rtc και με κάποιο interupt να κάνεις ότι θέλεις...

    1 Not allowed! Not allowed!
    φανατικος αντιαεικινηστης....
    δεν επιτρεπω την εξελιξη γιατι εχω πετρελαια...

  4. #4
    Μέλος
    Όνομα
    Λευτέρης
    Εγγραφή
    Jan 2011
    Περιοχή
    Αθήνα
    Μηνύματα
    80

    Προεπιλογή

    Καλησπέρα
    Θα ήθελα να ευχαριστήσω τον Γιώργο και τον Παναγιώτη για τις απαντήσεις τους.

    1 Not allowed! Not allowed!

  5. Ένα μέλος ευχαρίστησε τον leuteris107 για αυτό το χρήσιμο μήνυμα:

    George_b (10-02-17)

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

  1. arduino lm35 - relay
    By djlop in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 30-11-15, 15:37
  2. Σύνδεση Αrduino 5V 4chanel Relay module
    By manosss in forum Μικροελεγκτές
    Απαντήσεις: 25
    Τελευταίο Μήνυμα: 14-08-14, 13:15
  3. Τρανζιστορ και relay
    By christakosxo in forum Ερωτήσεις Θεωρίας
    Απαντήσεις: 17
    Τελευταίο Μήνυμα: 05-06-14, 15:16
  4. ARDUINO ΚΑΙ ATMEGA8
    By kwstas92 in forum Μικροελεγκτές
    Απαντήσεις: 36
    Τελευταίο Μήνυμα: 08-10-12, 21:57

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

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