Network clock using 7 segment.

Dependencies:   SNTPClient WIZnetInterface mbed

Fork of mbed_blinky by Mbed

Committer:
nanjsk
Date:
Tue Mar 01 17:26:46 2016 +0000
Revision:
11:8a1ab8deea2b
Parent:
4:81cea7a352b0
Child:
12:e60d3d6f24e8
first

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan 0:7dec7e9ac085 1 #include "mbed.h"
nanjsk 11:8a1ab8deea2b 2 #include "segment.h"
nanjsk 11:8a1ab8deea2b 3 #include "EthernetInterface.h"
nanjsk 11:8a1ab8deea2b 4 #include "SNTPClient.h"
nanjsk 11:8a1ab8deea2b 5
nanjsk 11:8a1ab8deea2b 6 Serial pc(USBTX,USBRX);
nanjsk 11:8a1ab8deea2b 7 EthernetInterface eth;
nanjsk 11:8a1ab8deea2b 8 datetime ntptime;
dan 0:7dec7e9ac085 9
nanjsk 11:8a1ab8deea2b 10 InterruptIn SW1(PA_15);
nanjsk 11:8a1ab8deea2b 11 DigitalOut ledR(LED1);
nanjsk 11:8a1ab8deea2b 12 DigitalOut ledG(LED2);
nanjsk 11:8a1ab8deea2b 13 DigitalOut ledB(LED3);
nanjsk 11:8a1ab8deea2b 14
nanjsk 11:8a1ab8deea2b 15 struct tm timeinfo;
nanjsk 11:8a1ab8deea2b 16
nanjsk 11:8a1ab8deea2b 17 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0xab};
nanjsk 11:8a1ab8deea2b 18 //char ip_addr[4] = {222,98,173.222};
nanjsk 11:8a1ab8deea2b 19 //char mask_addr[4] = {255,255,255,0};
nanjsk 11:8a1ab8deea2b 20 //char gw_addr[4] = {222,98,173,254};
nanjsk 11:8a1ab8deea2b 21 uint8_t display_mode = 0;
dan 0:7dec7e9ac085 22
nanjsk 11:8a1ab8deea2b 23 void time_set(){
nanjsk 11:8a1ab8deea2b 24 timeinfo.tm_mon = ntptime.mo-1;
nanjsk 11:8a1ab8deea2b 25 timeinfo.tm_mday = ntptime.dd;
nanjsk 11:8a1ab8deea2b 26 timeinfo.tm_hour = ntptime.hh;
nanjsk 11:8a1ab8deea2b 27 timeinfo.tm_min = ntptime.mm;
nanjsk 11:8a1ab8deea2b 28 timeinfo.tm_sec = ntptime.ss;
nanjsk 11:8a1ab8deea2b 29 timeinfo.tm_year = ntptime.yy-1900;
nanjsk 11:8a1ab8deea2b 30 //printf("%d-%d-%d, %02d:%02d:%02d\r\n", timeinfo.tm_year, timeinfo.tm_mon, timeinfo.tm_mday, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
nanjsk 11:8a1ab8deea2b 31 time_t t =mktime(&timeinfo);
nanjsk 11:8a1ab8deea2b 32 set_time(t);
nanjsk 11:8a1ab8deea2b 33 t = time(NULL);
nanjsk 11:8a1ab8deea2b 34 }
nanjsk 11:8a1ab8deea2b 35
nanjsk 11:8a1ab8deea2b 36 uint8_t SNTP_Connect(){
nanjsk 11:8a1ab8deea2b 37 printf("Getting time information by using NTP...\r\n");
nanjsk 11:8a1ab8deea2b 38
nanjsk 11:8a1ab8deea2b 39 SNTPClient sntp("time.nist.gov", 40); // timezone: Korea, Republic of
nanjsk 11:8a1ab8deea2b 40 sntp.connect();
nanjsk 11:8a1ab8deea2b 41 if(sntp.getTime(&ntptime) == true)
nanjsk 11:8a1ab8deea2b 42 {
nanjsk 11:8a1ab8deea2b 43 printf("%d-%d-%d, %02d:%02d:%02d\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss);
nanjsk 11:8a1ab8deea2b 44 printf("Completed Get and Set Time\r\n\r\n");
nanjsk 11:8a1ab8deea2b 45 ledR = 0;
nanjsk 11:8a1ab8deea2b 46 return 0;
nanjsk 11:8a1ab8deea2b 47 }
nanjsk 11:8a1ab8deea2b 48 else
nanjsk 11:8a1ab8deea2b 49 {
nanjsk 11:8a1ab8deea2b 50 while(sntp.getTime(&ntptime) == true)
nanjsk 11:8a1ab8deea2b 51 {
nanjsk 11:8a1ab8deea2b 52 break;
nanjsk 11:8a1ab8deea2b 53 }
nanjsk 11:8a1ab8deea2b 54 return 1;
stevep 4:81cea7a352b0 55 }
dan 0:7dec7e9ac085 56 }
nanjsk 11:8a1ab8deea2b 57
nanjsk 11:8a1ab8deea2b 58 void SW1_Interrupt(){
nanjsk 11:8a1ab8deea2b 59 ledG=!ledG;
nanjsk 11:8a1ab8deea2b 60 display_mode = display_mode + 1;
nanjsk 11:8a1ab8deea2b 61 if(display_mode == 2) display_mode = 0;
nanjsk 11:8a1ab8deea2b 62 pc.printf("Display Mode : %d\n\r",display_mode);
nanjsk 11:8a1ab8deea2b 63 }
nanjsk 11:8a1ab8deea2b 64
nanjsk 11:8a1ab8deea2b 65 int main() {
nanjsk 11:8a1ab8deea2b 66 pc.baud(115200);
nanjsk 11:8a1ab8deea2b 67 wait(0.5f);
nanjsk 11:8a1ab8deea2b 68 printf("Hello WIZwiki-W7500!\n\r");
nanjsk 11:8a1ab8deea2b 69 printf("===========================================\n\r");
nanjsk 11:8a1ab8deea2b 70 ledR = ledG = ledB = 1;
nanjsk 11:8a1ab8deea2b 71
nanjsk 11:8a1ab8deea2b 72 Seg_Reset();
nanjsk 11:8a1ab8deea2b 73
nanjsk 11:8a1ab8deea2b 74 eth.init(mac_addr); //Use DHCP
nanjsk 11:8a1ab8deea2b 75 //eth.init(mac_addr, ip_addr, mask_addr, gw_addr);
nanjsk 11:8a1ab8deea2b 76 printf("Check Ethernet Link\r\n");
nanjsk 11:8a1ab8deea2b 77 while(1) //Wait link up
nanjsk 11:8a1ab8deea2b 78 {
nanjsk 11:8a1ab8deea2b 79 if(eth.link() == true)
nanjsk 11:8a1ab8deea2b 80 break;
nanjsk 11:8a1ab8deea2b 81 }
nanjsk 11:8a1ab8deea2b 82 printf("Link up\r\n");
nanjsk 11:8a1ab8deea2b 83 eth.connect();
nanjsk 11:8a1ab8deea2b 84 printf("My IP Address is %s\r\n", eth.getIPAddress());
nanjsk 11:8a1ab8deea2b 85
nanjsk 11:8a1ab8deea2b 86 //printf("SNTP_Connect : %d\r\n",SNTP_Connect());
nanjsk 11:8a1ab8deea2b 87 while(SNTP_Connect());
nanjsk 11:8a1ab8deea2b 88 time_set();
nanjsk 11:8a1ab8deea2b 89
nanjsk 11:8a1ab8deea2b 90 char ymd_buffer[8];
nanjsk 11:8a1ab8deea2b 91 char hms_buffer[6];
nanjsk 11:8a1ab8deea2b 92
nanjsk 11:8a1ab8deea2b 93 SW1.fall(&SW1_Interrupt);
nanjsk 11:8a1ab8deea2b 94 while(1) {
nanjsk 11:8a1ab8deea2b 95 time_t seconds = time(NULL);
nanjsk 11:8a1ab8deea2b 96 //ymd_buffer[0]~[3] : Year
nanjsk 11:8a1ab8deea2b 97 //ymd_buffer[4]~[5] : Month
nanjsk 11:8a1ab8deea2b 98 //ymd_buffer[6]~[7] : Day
nanjsk 11:8a1ab8deea2b 99 strftime(ymd_buffer, 8, "%Y%m%d%\n\r", localtime(&seconds));
nanjsk 11:8a1ab8deea2b 100 //hms_buffer[0]~[1] : Hour
nanjsk 11:8a1ab8deea2b 101 //hms_buffer[2]~[3] : Minute
nanjsk 11:8a1ab8deea2b 102 //hms_buffer[4]~[5] : Second
nanjsk 11:8a1ab8deea2b 103 strftime(hms_buffer, 6, "%H%M%S\n\r", localtime(&seconds));
nanjsk 11:8a1ab8deea2b 104
nanjsk 11:8a1ab8deea2b 105 if(display_mode == 0) display_hms(hms_buffer);
nanjsk 11:8a1ab8deea2b 106 else if(display_mode == 1) display_ymd(ymd_buffer);
nanjsk 11:8a1ab8deea2b 107 else display_hms(hms_buffer);
nanjsk 11:8a1ab8deea2b 108 }
nanjsk 11:8a1ab8deea2b 109 }