اطلاعیه

Collapse
No announcement yet.

ایجاد یک برنامه ALARM برای کتابخانه ساعت RTClib

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ایجاد یک برنامه ALARM برای کتابخانه ساعت RTClib

    سلام بر عزیزان
    برای ساختن یک دستگاه کنترل دما و رطوبت به همراه ساعت و تقویم شمسی داخلی که قابلیت کنترل رله را داشته باشد با C++
    از کتابخانه RTClib برای راه اندازی یک ساعت با آی سی DS3231 استفاده کردم منتهی در مثالهاش هیچ نمونه ای برای استفاده از ALARM نیاورده .
    لطفا برای اضافه کردن Alarm که در واقع برای قطع و وصل کردن رله هام استفاده میکنم کمک بفرمایید.
    علت استفاده از این کتابخانه وجود یک برنامه ساعت مناسبه که از سایت electronics98 گرفتم می باشد
    عاقبت بخیری همه جوانان صلوات ختم کن
    کد PHP:
    // calculate a date which is 7 days, 12 hours and 30 seconds into the future
    DateTime future (now TimeSpan(7,12,30,6));

    //boolean
    rtc.setAlarm1(futureDS3231_A1_PerSecond);
    rtc.setAlarm2(futureDS3231_A2_PerMinute);

    //void
    rtc.disableAlarm(1);
    rtc.disableAlarm(2);

    //void
    rtc.clearAlarm(1);
    rtc.clearAlarm(2);


      
    DateTime alarm1(2014121355);

      
    DateTime now rtc.now();
      
    // calculate a date which is 2 days and 20 seconds into the future
      
    DateTime future (now TimeSpan(20020));
      
    char buffer1[] = "YYYY-MM-DD hh:mm:ss";
      
    Serial.println(future.toString(buffer1));

    //boolean
    rtc.alarmFired(1)
    rtc.alarmFired(2
    جدیدترین ویرایش توسط حمید حمید; ۱۵:۱۶ ۱۳۹۹/۰۱/۱۵.

    #2
    پاسخ : ایجاد یک برنامه ALARM برای کتابخانه ساعت RTClib

    کسی چیزی ندارد؟
    جدیدترین ویرایش توسط حمید حمید; ۱۱:۵۲ ۱۳۹۹/۰۱/۱۵.

    دیدگاه


      #3
      پاسخ : ایجاد یک برنامه ALARM برای کتابخانه ساعت RTClib

      سلام
      تا اینجاشو نوشتم کسی خواست استفاده کنه.
      اگر کسی میتونه بهینش کنه
      امکان داره تعداد Alarm ها را اضافه کرد؟
      چطوری وقفه آلارم را اجرا کنم بدون اینکه در برنامه وقفه ایجاد بشه؟
      rtc.disableAlarm(2 به چه کار میاد ؟هیچ تاثیری ازش ندیدم.
      کد PHP:
      // Date and time functions using a DS3231 RTC connected via I2C and Wire lib & Alarm
      #include "RTClib.h"
      #include "Wire.h"
      RTC_DS3231 rtc;

      //char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

      void setup () {

        
      Serial.begin(9600);

        
      delay(3000); // wait for console opening

        
      if (! rtc.begin()) {
          
      Serial.println("Couldn't find RTC");
          while (
      1);
        }

        if (
      rtc.lostPower()) {
          
      Serial.println("RTC lost power, lets set the time!");
          
      // If the RTC have lost power it will sets the RTC to the date & time this sketch was compiled in the following line
          
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
          
      // This line sets the RTC with an explicit date & time, for example to set
          // January 21, 2014 at 3am you would call:
          // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
        
      }

        
      // If you need to set the time of the uncomment line 34 or 37
        // following line sets the RTC to the date & time this sketch was compiled
        // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
        // This line sets the RTC with an explicit date & time, for example to set
        // January 21, 2014 at 3am you would call:
        // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
        
      Alarm1();
        
      Alarm2();
        
      //void
        //rtc.disableAlarm(1);
        //rtc.disableAlarm(2);
      }
      void Alarm1() {
        
      DateTime now rtc.now();
        
      // calculate a date which is 0 days & 0 hours & 0 minutes & 0 seconds into the future
        
      DateTime future1 (now TimeSpan(00030));
        
      rtc.setAlarm1(future1DS3231_A1_Minute);
        
      Serial.print("Next Alarm1 Fire ON:");
        
      char buffer1[] = "YYYY-MM-DD hh:mm:ss";
        
      Serial.println(future1.toString(buffer1));
        
      //void
        
      rtc.clearAlarm(1);
      }
      void Alarm2() {
        
        
        
      DateTime now rtc.now();
         
      //DateTime rtc.second() =0;
        // calculate a date which is 0 days & 0 hours & 0 minutes into the future
        
      DateTime future2 (now TimeSpan(0020));
        
      rtc.setAlarm2(future2DS3231_A2_Minute);
        
      Serial.print("Next Alarm2 Fire ON:");
        
      char buffer2[] = "YYYY-MM-DD hh:mm:00";
        
      Serial.println(future2.toString(buffer2));
        
      //void
        
      rtc.clearAlarm(2);
      }

      void loop () {
        
      DateTime now rtc.now();

        
      char buffer2[] = "hh:mm:ss";
        
      Serial.print(now.toString(buffer2));

        
      char buffer1[] = " Today is DDD, YYYY-MM MMM-DD";
        
      Serial.print(now.toString(buffer1));

        
      Serial.print(" Temperature:");
        
      Serial.print(rtc.getTemperature());
        
      Serial.println(" C");

        if (
      rtc.alarmFired(1))
        {
          
      Serial.println("Alarm1 Fire!!!!!!!!! ");
          
      delay(5000);
          
      rtc.clearAlarm(1);
          
      Alarm1();
        }

        if (
      rtc.alarmFired(2))
        {
          
      Serial.println("Alarm2 Fire########### ");
          
      delay(5000);
          
      rtc.clearAlarm(2);
          
      Alarm2();
        }
        
      Serial.println();
        
      delay(1000);

      دیدگاه

      لطفا صبر کنید...
      X