LCD clock display set using NTP server
Dependencies: EthernetNetIf NTPClient_NetServices TextLCD mbed
Internet_LCD_Clock.cpp@0:5c5226aac712, 2012-04-12 (annotated)
- Committer:
- 4180_1
- Date:
- Thu Apr 12 01:44:02 2012 +0000
- Revision:
- 0:5c5226aac712
- Child:
- 1:09fcc9b81f23
Who changed what in which revision?
User | Revision | Line number | New 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 | printf("Error %d in setup.\n\r", ethErr); |
4180_1 | 0:5c5226aac712 | 22 | lcd.cls(); |
4180_1 | 0:5c5226aac712 | 23 | lcd.printf("Network Error \n\r %d",ethErr); |
4180_1 | 0:5c5226aac712 | 24 | return -1; |
4180_1 | 0:5c5226aac712 | 25 | } |
4180_1 | 0:5c5226aac712 | 26 | lcd.cls(); |
4180_1 | 0:5c5226aac712 | 27 | ctTime = time(NULL); |
4180_1 | 0:5c5226aac712 | 28 | lcd.printf("Reading Time...\n\r"); |
4180_1 | 0:5c5226aac712 | 29 | //specify time server URL |
4180_1 | 0:5c5226aac712 | 30 | Host server(IpAddr(), 123, "0.uk.pool.ntp.org"); |
4180_1 | 0:5c5226aac712 | 31 | //Read time from server |
4180_1 | 0:5c5226aac712 | 32 | ntp.setTime(server); |
4180_1 | 0:5c5226aac712 | 33 | ctTime = time(NULL); |
4180_1 | 0:5c5226aac712 | 34 | lcd.printf("Time set"); |
4180_1 | 0:5c5226aac712 | 35 | //Delay for human time to read LCD display |
4180_1 | 0:5c5226aac712 | 36 | wait(1); |
4180_1 | 0:5c5226aac712 | 37 | while (1) { |
4180_1 | 0:5c5226aac712 | 38 | // loop and periodically update the LCD's time display |
4180_1 | 0:5c5226aac712 | 39 | lcd.cls(); |
4180_1 | 0:5c5226aac712 | 40 | ctTime = time(NULL); |
4180_1 | 0:5c5226aac712 | 41 | lcd.printf("UTC: %s", ctime(&ctTime)); |
4180_1 | 0:5c5226aac712 | 42 | wait(.25); |
4180_1 | 0:5c5226aac712 | 43 | } |
4180_1 | 0:5c5226aac712 | 44 | } |