elektronek

Jan Konečný - časové spínání

Sep 6th, 2020 (edited)
1,806
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <DS1302.h>
  3.  
  4. namespace {
  5.     const int kCePin   = 5;  // Chip Enable
  6.     const int kIoPin   = 6;  // Input/Output
  7.     const int kSclkPin = 7;  // Serial Clock
  8.  
  9.     DS1302 rtc(kCePin, kIoPin, kSclkPin);
  10.  
  11.     String dayAsString(const Time::Day day) {
  12.       switch (day) {
  13.         case Time::kSunday: return "Neděle";
  14.         case Time::kMonday: return "Pondělí";
  15.         case Time::kTuesday: return "Úterý";
  16.         case Time::kWednesday: return "Středa";
  17.         case Time::kThursday: return "Čtvrtek";
  18.         case Time::kFriday: return "Pátek";
  19.         case Time::kSaturday: return "Sobota";
  20.       }
  21.       return "(unknown day)";
  22.     }
  23.  
  24.     void printTime() {
  25.       Time t = rtc.time();
  26.       const String day = dayAsString(t.day);
  27.       char buf[50];
  28.       snprintf(buf, sizeof(buf), "%s %02d-%02d-%04d %02d:%02d:%02d",
  29.                day.c_str(),
  30.                t.date, t.mon, t.yr,
  31.                t.hr, t.min, t.sec);
  32.       Serial.println(buf);
  33.     }
  34.  
  35. }  // namespace
  36.  
  37. void setup() {
  38.     Serial.begin(9600);
  39.     pinMode(3, OUTPUT);
  40.     rtc.writeProtect(false);
  41.     rtc.halt(false);
  42.     //  Time t(2020, 9, 5, 16, 29, 50, Time::kSaturday);
  43.     // Set the time and date on the chip.
  44.     //  rtc.time(t);
  45. }
  46.  
  47. void loop() {
  48.     printTime();
  49.  
  50.     // Start time - zde si zadas v kolik zapnout
  51.     int hodinyOn=15;
  52.     int minutyOn=8;
  53.     // Stop time - zde si zadas v kolik vypnout
  54.     int hodinyOff=15;
  55.     int minutyOff=9;
  56.     // Cas ted se nacte z RTC
  57.     int hodinyTed=t.hr;
  58.     int minutyTed=t.min;
  59.     // Prevedeno na cele cislo
  60.     int startTime = hodinyOn*60+minutyOn;
  61.     int stopTime = hodinyOff*60+minutyOff;
  62.     int casTed = hodinyTed*60+minutyTed;
  63.  
  64.  
  65.     // Vyhodnocujeme, prvni tretina plati pro casy co nejsou pres pulnoc, dalsi 2/3 jsou pro casy co jdou pres pulnoc
  66.     if ((startTime < stopTime && casTed > startTime && casTed < stopTime) || (startTime > stopTime && casTed > startTime) || (startTime > stopTime && casTed < stopTime))
  67.             digitalWrite(3, HIGH );
  68.     else
  69.             digitalWrite(3, LOW );
  70.  
  71.  
  72. //  Sepnuti led
  73. //    if ( (t.hr == 15) && (t.min == 8) && (t.sec == 0) ) { digitalWrite(3, HIGH ); };
  74. //  Vypnutí led
  75. //    if ( (t.hr == 15) && (t.min == 9) && (t.sec == 0) ) { digitalWrite(3, LOW ); };
  76.     delay(1000);
  77. }
  78.  
Add Comment
Please, Sign In to add comment