Skip to main content
added 4 characters in body
Source Link
RickH
  • 41
  • 1
  • 8
#include "RTClib.h"
#include <Wire.h>
#include <TimeLib.h>

DS1307RTC_DS1307 RTC;

time_t time_provider()
{
    return RTC.now().unixtime();
}

tmElements_t tm;  //part of Time Library

void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC

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

    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));

    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);

    //Setting Time Library to RTC time
    DateTime now = RTC.now();
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
}


void loop() {
    setSyncProvider(RTC.now);
    setSyncInterval(5000);

    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();

    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();
    delay(1000);
}
#include "RTClib.h"
#include <Wire.h>
#include <TimeLib.h>

DS1307 RTC;

time_t time_provider()
{
    return RTC.now().unixtime();
}

tmElements_t tm;  //part of Time Library

void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC

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

    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));

    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);

    //Setting Time Library to RTC time
    DateTime now = RTC.now();
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
}


void loop() {
    setSyncProvider(RTC.now);
    setSyncInterval(5000);

    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();

    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();
    delay(1000);
}
#include "RTClib.h"
#include <Wire.h>
#include <TimeLib.h>

RTC_DS1307 RTC;

time_t time_provider()
{
    return RTC.now().unixtime();
}

tmElements_t tm;  //part of Time Library

void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC

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

    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));

    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);

    //Setting Time Library to RTC time
    DateTime now = RTC.now();
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
}


void loop() {
    setSyncProvider(RTC.now);
    setSyncInterval(5000);

    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();

    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();
    delay(1000);
}
Code formatting.
Source Link
Edgar Bonet
  • 45.2k
  • 4
  • 42
  • 81
    #include "RTClib.h" 
    #include <Wire.h>   
    #include <TimeLib.h>
    
    RTC_DS1307 RTC;
    
    time_t time_provider() 
      {
        return RTC.now().unixtime();
      }
      
    
    tmElements_t tm;  //part of Time Library
    
    void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC
    
    if (! RTC.begin()) {
        Serial.println("Couldn't find RTC");
        }
        
    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));
    
    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);  
    
    
    //Setting Time Library to RTC time
    DateTime now = RTC.now(); 
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
    }
    
    
     void loop() {
    setSyncProvider(RTC.now); //
    setSyncInterval(5000);   // 
    
    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();
    
    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();  
    delay(1000);
     }



Serial Prints:

    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
#include "RTClib.h"
#include <Wire.h>
#include <TimeLib.h>

DS1307 RTC;

time_t time_provider()
{
    return RTC.now().unixtime();
}

tmElements_t tm;  //part of Time Library

void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC

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

    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));

    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);

    //Setting Time Library to RTC time
    DateTime now = RTC.now();
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
}


void loop() {
    setSyncProvider(RTC.now);
    setSyncInterval(5000);

    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();

    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();
    delay(1000);
}

Serial Prints:

tm.Hour:    5
tm.Minute:  34
tm.Seconds: 56

tm.Hour:    18
tm.Minute:  0
tm.Seconds: 0

tm.Hour:    5
tm.Minute:  34
tm.Seconds: 56

tm.Hour:    18
tm.Minute:  0
tm.Seconds: 0

tm.Hour:    5
tm.Minute:  34
tm.Seconds: 56

tm.Hour:    18
tm.Minute:  0
tm.Seconds: 0
    #include "RTClib.h" 
    #include <Wire.h>   
    #include <TimeLib.h>
    
    RTC_DS1307 RTC;
    
    time_t time_provider() 
      {
        return RTC.now().unixtime();
      }
      
    
    tmElements_t tm;  //part of Time Library
    
    void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC
    
    if (! RTC.begin()) {
        Serial.println("Couldn't find RTC");
        }
        
    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));
    
    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);  
    
    
    //Setting Time Library to RTC time
    DateTime now = RTC.now(); 
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
    }
    
    
     void loop() {
    setSyncProvider(RTC.now); //
    setSyncInterval(5000);   // 
    
    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();
    
    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();  
    delay(1000);
     }



Serial Prints:

    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
#include "RTClib.h"
#include <Wire.h>
#include <TimeLib.h>

DS1307 RTC;

time_t time_provider()
{
    return RTC.now().unixtime();
}

tmElements_t tm;  //part of Time Library

void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC

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

    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));

    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);

    //Setting Time Library to RTC time
    DateTime now = RTC.now();
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
}


void loop() {
    setSyncProvider(RTC.now);
    setSyncInterval(5000);

    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();

    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();
    delay(1000);
}

Serial Prints:

tm.Hour:    5
tm.Minute:  34
tm.Seconds: 56

tm.Hour:    18
tm.Minute:  0
tm.Seconds: 0

tm.Hour:    5
tm.Minute:  34
tm.Seconds: 56

tm.Hour:    18
tm.Minute:  0
tm.Seconds: 0

tm.Hour:    5
tm.Minute:  34
tm.Seconds: 56

tm.Hour:    18
tm.Minute:  0
tm.Seconds: 0
added 2983 characters in body
Source Link
RickH
  • 41
  • 1
  • 8

Updated 5 Nov 2020

I think I almost understand. Please let me know if this code is doing what I think it is doing, specifically:

In Setup:
Set the RTC to 5:10:30.
Set Time Library to 9:27:05 with setTime().
Set Time Library to RTC time with DateTime now (over writing 9:27:05)?
Set Time Library variables to RTC using tm.Hour = now.Hour, etc.

In Loop:
Every 5 seconds update hour(), minute() second() with RTC time.
Every loop update tm.hour with hour(), etc.

I know it is still not right since the serial prints show tm.Hour,tm.Minute alternating each loop as shown at the bottom.

    #include "RTClib.h" 
    #include <Wire.h>   
    #include <TimeLib.h>
    
    RTC_DS1307 RTC;
    
    time_t time_provider() 
      {
        return RTC.now().unixtime();
      }
      
    
    tmElements_t tm;  //part of Time Library
    
    void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC
    
    if (! RTC.begin()) {
        Serial.println("Couldn't find RTC");
        }
        
    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));
    
    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);  
    
    
    //Setting Time Library to RTC time
    DateTime now = RTC.now(); 
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
    }
    
    
     void loop() {
    setSyncProvider(RTC.now); //
    setSyncInterval(5000);   // 
    
    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();
    
    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();  
    delay(1000);
     }



Serial Prints:

    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0

Updated 5 Nov 2020

I think I almost understand. Please let me know if this code is doing what I think it is doing, specifically:

In Setup:
Set the RTC to 5:10:30.
Set Time Library to 9:27:05 with setTime().
Set Time Library to RTC time with DateTime now (over writing 9:27:05)?
Set Time Library variables to RTC using tm.Hour = now.Hour, etc.

In Loop:
Every 5 seconds update hour(), minute() second() with RTC time.
Every loop update tm.hour with hour(), etc.

I know it is still not right since the serial prints show tm.Hour,tm.Minute alternating each loop as shown at the bottom.

    #include "RTClib.h" 
    #include <Wire.h>   
    #include <TimeLib.h>
    
    RTC_DS1307 RTC;
    
    time_t time_provider() 
      {
        return RTC.now().unixtime();
      }
      
    
    tmElements_t tm;  //part of Time Library
    
    void setup() {
    //setSyncProvider(time_provider);
    Serial.begin(9600);
    Wire.begin();  //sets up the I2C
    RTC.begin();   //initializes the I2C to the RTC
    
    if (! RTC.begin()) {
        Serial.println("Couldn't find RTC");
        }
        
    //  Set the RTC Time to 5:10:30 Nov 3 2020
    RTC.adjust(DateTime(2020,11,3,5,10,30));
    
    //Set Arduino Time Library different than RTC time 9:27:05
    setTime(9, 27, 05, 14, 07, 2015);  
    
    
    //Setting Time Library to RTC time
    DateTime now = RTC.now(); 
    tm.Hour = now.hour();
    tm.Minute = now.minute();
    tm.Second = now.second();
    }
    
    
     void loop() {
    setSyncProvider(RTC.now); //
    setSyncInterval(5000);   // 
    
    //Time Library time updates to RTC every 5 seconds
    tm.Hour = hour();
    tm.Minute = minute();
    tm.Second = second();
    
    Serial.print("tm.Hour:    ");
    Serial.print(tm.Hour);
    Serial.println();
    Serial.print("tm.Minute:  ");
    Serial.print(tm.Minute);
    Serial.println();
    Serial.print("tm.Seconds: ");
    Serial.print(tm.Second);
    Serial.println();
    Serial.println();  
    delay(1000);
     }



Serial Prints:

    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
    
    tm.Hour:    5
    tm.Minute:  34
    tm.Seconds: 56
    
    tm.Hour:    18
    tm.Minute:  0
    tm.Seconds: 0
Became Hot Network Question
Source Link
RickH
  • 41
  • 1
  • 8
Loading