LCD clock display set using NTP server

Dependencies:   EthernetNetIf NTPClient_NetServices TextLCD mbed

Fork of Internet_LCD_Clock by jim hamblen

Committer:
4180_1
Date:
Tue Sep 18 13:53:22 2012 +0000
Revision:
2:cf35fcda83d0
Parent:
1:09fcc9b81f23
Has the older networking library code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
4180_1 0:5c5226aac712 1 #include "mbed.h"
4180_1 0:5c5226aac712 2 #include "EthernetNetIf.h"
4180_1 0:5c5226aac712 3 #include "NTPClient.h"
4180_1 0:5c5226aac712 4 #include "TextLCD.h"
4180_1 0:5c5226aac712 5 // Internet of Things clock example: LCD time is set via internet NTP time server
4180_1 0:5c5226aac712 6 TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d0-d3
4180_1 0:5c5226aac712 7 EthernetNetIf eth;
4180_1 0:5c5226aac712 8 NTPClient ntp;
4180_1 0:5c5226aac712 9
4180_1 0:5c5226aac712 10 int main() {
4180_1 0:5c5226aac712 11 //system time structure
4180_1 0:5c5226aac712 12 time_t ctTime;
4180_1 0:5c5226aac712 13 //clear LCD
4180_1 0:5c5226aac712 14 lcd.cls();
4180_1 0:5c5226aac712 15 // lcd.printf prints to LCD display;
4180_1 0:5c5226aac712 16 lcd.printf("Get IP addr...");
4180_1 0:5c5226aac712 17 EthernetErr ethErr = eth.setup();
4180_1 0:5c5226aac712 18 //Get an Internet IP address using DHCP
4180_1 0:5c5226aac712 19 if (ethErr) {
4180_1 0:5c5226aac712 20 //error or timeout getting an IP address
4180_1 0:5c5226aac712 21 lcd.cls();
4180_1 0:5c5226aac712 22 lcd.printf("Network Error \n\r %d",ethErr);
4180_1 0:5c5226aac712 23 return -1;
4180_1 0:5c5226aac712 24 }
4180_1 0:5c5226aac712 25 lcd.cls();
4180_1 0:5c5226aac712 26 lcd.printf("Reading Time...\n\r");
4180_1 0:5c5226aac712 27 //specify time server URL
4180_1 0:5c5226aac712 28 Host server(IpAddr(), 123, "0.uk.pool.ntp.org");
4180_1 0:5c5226aac712 29 //Read time from server
4180_1 0:5c5226aac712 30 ntp.setTime(server);
4180_1 0:5c5226aac712 31 lcd.printf("Time set");
4180_1 0:5c5226aac712 32 //Delay for human time to read LCD display
4180_1 0:5c5226aac712 33 wait(1);
4180_1 0:5c5226aac712 34 while (1) {
4180_1 0:5c5226aac712 35 // loop and periodically update the LCD's time display
4180_1 0:5c5226aac712 36 lcd.cls();
4180_1 0:5c5226aac712 37 ctTime = time(NULL);
4180_1 0:5c5226aac712 38 lcd.printf("UTC: %s", ctime(&ctTime));
4180_1 2:cf35fcda83d0 39 printf("Current time is (UTC): %s\n", ctime(&ctTime));
4180_1 0:5c5226aac712 40 wait(.25);
4180_1 0:5c5226aac712 41 }
4180_1 0:5c5226aac712 42 }