Go Down

Topic: Implementing NTP Time Synchronization Stops code from working? (Read 203 times) previous topic - next topic


Hello all,

I have an Arduino Mega 2560 with an ethernet shield (w5100) connected to a local database.  My end goal is to send date time stamps whenever an input is detected, but for the sake of testing I'm sending data every 5 seconds.  Attached is my code.  "testWorks.ino" successfully sends a date time stamp to my local database, but once I implement NTP time synchronization ("testSimple.ino"), the Arduino stops connecting after 4 times.  By this, I mean "Connection Established" prints to the serial monitor 4 times (goes through the loop block 4 times), and the database successfully receives the data.  But it stops working after the 4th time, printing "Connection failed."  Does the 4th time have anything to do with max sockets equaling 4 in the Ethernet library? 

Because "testWorks.ino" works, but "testSimple.ino" doe not work, I know there must be an issue with the NTP synchronization code, but I am new to all this and any help/suggestions will be appreciated.  Thank you for your time.


Does the 4th time have anything to do with max sockets equaling 4 in the Ethernet library? 
Seems like a reasonable starting point for investigation.

Code: [Select]
      client.print("GET /info.php?"); //GET request to write data to the database.
       client.print(year()); if(month() < 10) { client.print("0"); }
       client.print(month()); if(day() < 10) { client.print("0"); }
       client.print(day()); if(hour() < 10) { client.print("0"); }
       client.print(hour()); if(minute() < 10) { client.print("0"); }
       client.print(minute()); if(second() < 10) { client.print("0"); }
      client.println(" HTTP/1.1");

The entire GET request is supposed to be on one line. println() is used ONLY to send the HTTP/1.1 terminator.

If you don't call setSyncProvider(), so the getNtpTime() function never gets called, do you still lock up after 4 calls?
The art of getting good answers lies in asking good questions.


I was testing my code, and added the following lines in my setup loop:
 pinMode(4, OUTPUT);
 digitalWrite(4, HIGH);

And for some reason it now doesn't lock up after 4 calls.  I even tested the code after commenting  "pinMode(4, OUTPUT);  digitalWrite(4, HIGH);" out, and it still worked (didn't lock up after 4 calls).

I also tested my code with and without calling setSyncProvider(), with both times working (no lock ups after 4 calls). 

So far, the code is working, so I will post if I need any more assistance.  Thanks for your help!

Go Up