RTC DS1307 with Arduino Mega and Ethernet Shield

Hello.

I am currently developing a project in which I'm using a RTC DS1307 module to get access to current time and date.

I managed to get it to work just fine when connected to my Arduino Mega 2560. I am connecting the SDA and SCL from RTC to pins 20 and 21, respectively.

However, as soon as I put my Ethernet Shield (which I use to access an SD card) on top of the Arduino, the connection with the RTC boards stops to work, and I get the following message from my Serial Monitor:

Couldn't find RTC

I am using the example code available from the RTClib library, with no alterations:

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include "RTClib.h"

RTC_DS1307 rtc;

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

void setup () {
  Serial.begin(57600);

#ifndef ESP8266
  while (!Serial); // wait for serial port to connect. Needed for native USB
#endif

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

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running, let's set the time!");
    // When time needs to be set on a new device, or after a power loss, the
    // 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));
  }

  // When time needs to be re-set on a previously configured device, the
  // 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('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");

    // calculate a date which is 7 days, 12 hours, 30 minutes, and 6 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));

    Serial.print(" now + 7d + 12h + 30m + 6s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();

    Serial.println();
    delay(3000);
}

Does anyone have any idea on how I could solve this problem?

Thanks in advance.

Buy a shield that has Ethernet, SD card and an RTC.

Can't find one? That's the thing with shields. Very inflexible. If the shield does everything you need, great. If not...

Post links to the specs of your shield and your RTC module, and post a photo showing how you are physically connecting both to the Mega at the same time.

Generate a schematic of how you have it wired showing power and ground, I am fairly confident you are using a pin for two incompatible functions. Post links to technical information on all hardware devices.

Thanks for the answers.

Here is the schematic of my connections:

Here is what the connections look like for the RTC DS1307:

Here is what the connections look like for the Arduino Mega + Shield (situation in which the program does not work):

Here is what the connections look like when connected only to the Arduino Mega (situation in which the program works just fine):

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.