zommer winterstand ds3231

Toon hier Uw afgeronde projecten aan anderen.
Berichten: 6
Geregistreerd: 29 Dec 2020, 12:35

zommer winterstand ds3231

Berichtdoor wappie » 29 Dec 2020, 17:07

hierbij een code die je kunt gebruiken voor een rtc klok , hij i s voorzien van een zomer en winterstand en zaldus een uur meer of minder automatich doen
tevens zit er een voorbeeld in om een relais te schakelen.

veelplezier er mee





#include <EEPROM.h>
#include <RTClib.h>


RTC_DS3231 rtc;
int DST;
int Relay = 4;

// relay gaat aan om 22,48 en uit om 22,49
const int OnHour = 22; //het uur waneer er geschakelt word (24 uur FORMAT)
const int OnMin = 48;de minuten
const int OffHour = 22; //uit tijd
const int OffMin = 49;

void setup()
{
Serial.begin(9600);

pinMode(Relay, OUTPUT);
digitalWrite(Relay, LOW);

DST = EEPROM.get(0, DST);

if(DST != 0 && DST != 1)

{

DST = 1;

EEPROM.put(0, DST);

}

// Uncomment the following 2 lines if you need to set the DST (if you miss the actual day etc). Change the +1 to -1 in the fall.
// DateTime t2 = rtc.now();
// rtc.adjust(DateTime(t2.year(), t2.month(), t2.day(), t2.hour()+1, t2.minute(), t2.second()));

}


void loop()
{

DateTime now = rtc.now();

Serial.println("Current Date & 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.dayOfTheWeek(), DEC);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

if (now.dayOfTheWeek() == 0 && now.month() == 3 && now.day() >= 8 && now.day() <= 16 && now.hour() == 2 && now.minute() == 0 && now.second() == 0 && DST == 0)
{

rtc.adjust(DateTime(now.year(), now.month(), now.day(), now.hour()+1, now.minute(), now.second()));
DST = 1;
EEPROM.put(0, DST);

}
else if(now.dayOfTheWeek() == 0 && now.month() == 11 && now.day() >= 1 && now.day() <= 8 && now.hour() == 2 && now.minute() == 0 && now.second() == 0 && DST == 1)
{

rtc.adjust(DateTime(now.year(), now.month(), now.day(), now.hour()-1, now.minute(), now.second()));
DST = 0;
EEPROM.put(0, DST);

}
if (now.hour() == OnHour && now.minute() == OnMin) // When the values are equivalent

{

digitalWrite(Relay, HIGH); // Pin 4 is HIGH
Serial.println("LIGHT ON"); // Print the Message

}



else if (now.hour() == OffHour && now.minute() == OffMin) // When the values are equivalent

{

digitalWrite(Relay, LOW); // Pin 4 is Low
Serial.println("LIGHT OFF"); // Print the Message

}

}

Advertisement

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten