Go Down

Topic: Getting RTC to work with data-logging board and Arduino MEGA (Read 101 times) previous topic - next topic


Dear Community,

Not 100% sure that this is the correct folder for my topic.

This is my first Arduino project. I am data-logging simple information (voltage) on an SD-card with a Deek-Robot data-logger shield v1.0 connected to an Arduino Mega ADK. I made this work by connecting ports 10-11-12-13 of the shield to ports 53-50-51-52 of the Arduino Mega, thanks to the help of this forum.

Now, I am trying to add the time to this data-logging. The shield includes a RTC DS1307. I am testing a basic code to initialize time and print it, and receive an error. I know that this has something to do with the wiring of the SCL and SDA pins, but there seem to be plenty of these pins on both the shield and the Arduino, so I don't know which to connect where.

I attach a picture of the shield, of which all pins are connected to the arduino through the headers.

I should mention that I installed the RTC library.

This is the code (it is an example code):

Code: [Select]
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

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

void setup () {
  while (!Serial); // for Leonardo/Micro/Zero

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

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // 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));

void loop () {
    DateTime now = rtc.now();
    Serial.print(now.year(), DEC);
    Serial.print(now.month(), DEC);
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(now.minute(), DEC);
    Serial.print(now.second(), DEC);
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print(future.month(), DEC);
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(future.minute(), DEC);
    Serial.print(future.second(), DEC);

The message "RTC is NOT running!" pops up. Did anyone use this shield with an Arduino Mega? How should I wire it?

Warmest thanks.


SDA SCL are on Mega pins 20,21 as clearly marked. You need to provide a jumper to these pins, presumably from the pads maked on the shield..


As can be seen on the picture, there are 2 pads with SDA and SCL marks on the shield. One pair is close to the analogic pins 4 and 5, the other close to the reset button. I tried to connect both of these paris (separately of course) to the SCL and SDA pins of the Mega (pins 20,21). I still have the same problem.


I connected a RTC external form the shield, connected it to pins 20 and 21, and it works. This is fine enough for me. Thank you!


It's possible that the other ones are dead connect to pins 4,5.  In short, you need to install jumpers even if you are putting the shield on a Uno.

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131