Új hozzászólás Aktív témák

  • Tomi8822

    tag

    válasz weiss #7536 üzenetére

    // Date and time functions using a DS3231 RTC connected via I2C and Wire Lib

    #include <Wire.h>
    #include <RTClib.h>
    #include <Time.h>
    #include <TimeAlarms.h>

    RTC_DS1307 RTC;

    // Start Time
    int sHour = 11;
    int sMinute =30;
    int sSecond = 0;

    // End Time
    int eHour = 11;
    int eMinute = 30;
    int eSecond = 4;

    int lightRelay = 2;
    int lightRelay2 = 3;
    int lightRelay3 = 4;
    int lightRelay4 = 5;
    int lightRelay5 = 6;
    int lightRelay6 = 7;

    void setup() {
    // Set the relay to off immediately
    digitalWrite(lightRelay, HIGH);

    Serial.begin(9600);
    Wire.begin();
    RTC.begin();

    // Set the pinmode
    pinMode(lightRelay, OUTPUT);

    // Notify if the RTC isn't running
    if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running");
    }

    // Get time from RTC
    DateTime current = RTC.now();
    DateTime compiled = DateTime(__DATE__, __TIME__);
    if (current.unixtime() < compiled.unixtime()) {
    Serial.println("RTC is older than compile time! Updating");
    RTC.adjust(DateTime(__DATE__, __TIME__));
    }

    // Use RTC time to set the start time
    setTime(sHour, sMinute, sSecond, current.day(), current.month(), current.year());
    time_t s = now();

    // Use RTC time to set the end time
    setTime(eHour, eMinute, eSecond, current.day(), current.month(), current.year());
    time_t e = now();

    // Use RTC time to set the current time
    setTime(current.hour(), current.minute(), current.second(), current.day(), current.month(), current.year());
    time_t n = now();

    // Test if grow light should be on
    if (s <= n && n <= e) {
    digitalWrite(lightRelay, LOW); // Sets the grow light "on"
    }

    Alarm.alarmRepeat(sHour, sMinute, sSecond, LightOn);
    Alarm.alarmRepeat(eHour, eMinute, eSecond, LightOff);
    }

    void loop() {
    DateTime now = RTC.now();
    setTime(now.hour(), now.minute(), now.second(), now.day(), now.month(), now.year());

    Serial.print("Current time: ");
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    Serial.println();
    Alarm.delay(1000);
    }

    void LightOn() {
    Serial.println("Turning Light On");
    digitalWrite(lightRelay, LOW);
    }

    void LightOff() {
    Serial.println("Turning Light Off");
    digitalWrite(lightRelay, HIGH);
    }

    Csak annyit szeretnék hogy a hat relét adott időben be majd ki kapcsolni külön külön

Új hozzászólás Aktív témák

Hirdetés