Ошибка в коде автоматического полива по времени

Тема в разделе "Arduino & Shields", создана пользователем luckymax_578, 4 окт 2016.

  1. luckymax_578

    luckymax_578 Нуб

    Здравствуйте дорогие друзья! Создаю код для автоматического полива растения с помощью часов реального времени на основе кода ArtSmm. При компиляции выдает ошибку
    'now' was not declared in this scope в этой строчке unsigned long curSeconds = (now.hour()*60 +now.minute() )*60; Может быть, кто-нибудь подскажет, как решить данную проблему? Заранее спасибо.


    Код (C++):
    // Date and time functions using a DS1307 RTC connected via I2C and Wire lib
    #include <Wire.h>
    #include "RTClib.h"

        //Условие для подсчета времени

        unsigned long curSeconds = (now.hour()*60 +now.minute() )*60;

    //Реле

    #define Relay 3

    RTC_DS1307 rtc;

    void setup () {

      //Реле

      pinMode(Relay, OUTPUT);

      //Часы

      Wire.begin();
      rtc.begin();
      Serial.begin(9600);
      rtc.adjust(DateTime(2014, 8, 2, 6, 48, 0));

    }

    void loop () {

        //Цикл полива по времени
     
          DateTime now = rtc.now();

        //Выставляем нужное время полива в условии.

        if(curSeconds > (21*60+20)*60 && curSeconds < (21*60+20)*60+10) {
          digitalWrite(Relay, LOW);
          }
         else digitalWrite(Relay, HIGH);

    }

     
     
  2. ZAZ-965

    ZAZ-965 Гуру

    Код (C++):
    // Date and time functions using a DS1307 RTC connected via I2C and Wire lib
    #include <Wire.h>
    #include <RTClib.h>

    //Реле
    #define Relay 3

    RTC_DS1307 rtc;

    void setup () {

      //Реле

      pinMode(Relay, OUTPUT);

      //Часы

      Wire.begin();
      rtc.begin();
      Serial.begin(9600);
      rtc.adjust(DateTime(2014, 8, 2, 6, 48, 0));

    }

    void loop () {

        //Цикл полива по времени
         DateTime now = rtc.now();

        //Условие для подсчета времени
        unsigned long curSeconds = (now.hour()*60 +now.minute() )*60;    

        //Выставляем нужное время полива в условии.
        if(curSeconds > (21*60+20)*60 && curSeconds < (21*60+20)*60+10) {
          digitalWrite(Relay, LOW);
          }
         else digitalWrite(Relay, HIGH);

    }
     
    Tomasina и luckymax_578 нравится это.
  3. luckymax_578

    luckymax_578 Нуб

    Огромное спасибо
     
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    а зачем точность до секунд доводить? Минутного порога достаточно.