Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <DS1302.h>
- namespace {
- const int kCePin = 5; // Chip Enable
- const int kIoPin = 6; // Input/Output
- const int kSclkPin = 7; // Serial Clock
- DS1302 rtc(kCePin, kIoPin, kSclkPin);
- String dayAsString(const Time::Day day) {
- switch (day) {
- case Time::kSunday: return "Neděle";
- case Time::kMonday: return "Pondělí";
- case Time::kTuesday: return "Úterý";
- case Time::kWednesday: return "Středa";
- case Time::kThursday: return "Čtvrtek";
- case Time::kFriday: return "Pátek";
- case Time::kSaturday: return "Sobota";
- }
- return "(unknown day)";
- }
- void printTime() {
- Time t = rtc.time();
- const String day = dayAsString(t.day);
- char buf[50];
- snprintf(buf, sizeof(buf), "%s %02d-%02d-%04d %02d:%02d:%02d",
- day.c_str(),
- t.date, t.mon, t.yr,
- t.hr, t.min, t.sec);
- Serial.println(buf);
- }
- } // namespace
- void setup() {
- Serial.begin(9600);
- pinMode(3, OUTPUT);
- rtc.writeProtect(false);
- rtc.halt(false);
- // Time t(2020, 9, 5, 16, 29, 50, Time::kSaturday);
- // Set the time and date on the chip.
- // rtc.time(t);
- }
- void loop() {
- printTime();
- // Start time - zde si zadas v kolik zapnout
- int hodinyOn=15;
- int minutyOn=8;
- // Stop time - zde si zadas v kolik vypnout
- int hodinyOff=15;
- int minutyOff=9;
- // Cas ted se nacte z RTC
- int hodinyTed=t.hr;
- int minutyTed=t.min;
- // Prevedeno na cele cislo
- int startTime = hodinyOn*60+minutyOn;
- int stopTime = hodinyOff*60+minutyOff;
- int casTed = hodinyTed*60+minutyTed;
- // Vyhodnocujeme, prvni tretina plati pro casy co nejsou pres pulnoc, dalsi 2/3 jsou pro casy co jdou pres pulnoc
- if ((startTime < stopTime && casTed > startTime && casTed < stopTime) || (startTime > stopTime && casTed > startTime) || (startTime > stopTime && casTed < stopTime))
- digitalWrite(3, HIGH );
- else
- digitalWrite(3, LOW );
- // Sepnuti led
- // if ( (t.hr == 15) && (t.min == 8) && (t.sec == 0) ) { digitalWrite(3, HIGH ); };
- // Vypnutí led
- // if ( (t.hr == 15) && (t.min == 9) && (t.sec == 0) ) { digitalWrite(3, LOW ); };
- delay(1000);
- }
Add Comment
Please, Sign In to add comment