
Network clock using 7 segment.
Dependencies: SNTPClient WIZnetInterface mbed
Fork of mbed_blinky by
Diff: main.cpp
- Revision:
- 11:8a1ab8deea2b
- Parent:
- 4:81cea7a352b0
- Child:
- 12:e60d3d6f24e8
--- a/main.cpp Sun Jan 17 03:25:27 2016 +0000 +++ b/main.cpp Tue Mar 01 17:26:46 2016 +0000 @@ -1,12 +1,109 @@ #include "mbed.h" +#include "segment.h" +#include "EthernetInterface.h" +#include "SNTPClient.h" + +Serial pc(USBTX,USBRX); +EthernetInterface eth; +datetime ntptime; -DigitalOut myled(LED1); +InterruptIn SW1(PA_15); +DigitalOut ledR(LED1); +DigitalOut ledG(LED2); +DigitalOut ledB(LED3); + +struct tm timeinfo; + +uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0xab}; +//char ip_addr[4] = {222,98,173.222}; +//char mask_addr[4] = {255,255,255,0}; +//char gw_addr[4] = {222,98,173,254}; +uint8_t display_mode = 0; -int main() { - while(1) { - myled = 1; - wait(0.2); - myled = 0; - wait(0.2); +void time_set(){ + timeinfo.tm_mon = ntptime.mo-1; + timeinfo.tm_mday = ntptime.dd; + timeinfo.tm_hour = ntptime.hh; + timeinfo.tm_min = ntptime.mm; + timeinfo.tm_sec = ntptime.ss; + timeinfo.tm_year = ntptime.yy-1900; + //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); + time_t t =mktime(&timeinfo); + set_time(t); + t = time(NULL); +} + +uint8_t SNTP_Connect(){ + printf("Getting time information by using NTP...\r\n"); + + SNTPClient sntp("time.nist.gov", 40); // timezone: Korea, Republic of + sntp.connect(); + if(sntp.getTime(&ntptime) == true) + { + printf("%d-%d-%d, %02d:%02d:%02d\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss); + printf("Completed Get and Set Time\r\n\r\n"); + ledR = 0; + return 0; + } + else + { + while(sntp.getTime(&ntptime) == true) + { + break; + } + return 1; } } + +void SW1_Interrupt(){ + ledG=!ledG; + display_mode = display_mode + 1; + if(display_mode == 2) display_mode = 0; + pc.printf("Display Mode : %d\n\r",display_mode); +} + +int main() { + pc.baud(115200); + wait(0.5f); + printf("Hello WIZwiki-W7500!\n\r"); + printf("===========================================\n\r"); + ledR = ledG = ledB = 1; + + Seg_Reset(); + + eth.init(mac_addr); //Use DHCP + //eth.init(mac_addr, ip_addr, mask_addr, gw_addr); + printf("Check Ethernet Link\r\n"); + while(1) //Wait link up + { + if(eth.link() == true) + break; + } + printf("Link up\r\n"); + eth.connect(); + printf("My IP Address is %s\r\n", eth.getIPAddress()); + + //printf("SNTP_Connect : %d\r\n",SNTP_Connect()); + while(SNTP_Connect()); + time_set(); + + char ymd_buffer[8]; + char hms_buffer[6]; + + SW1.fall(&SW1_Interrupt); + while(1) { + time_t seconds = time(NULL); + //ymd_buffer[0]~[3] : Year + //ymd_buffer[4]~[5] : Month + //ymd_buffer[6]~[7] : Day + strftime(ymd_buffer, 8, "%Y%m%d%\n\r", localtime(&seconds)); + //hms_buffer[0]~[1] : Hour + //hms_buffer[2]~[3] : Minute + //hms_buffer[4]~[5] : Second + strftime(hms_buffer, 6, "%H%M%S\n\r", localtime(&seconds)); + + if(display_mode == 0) display_hms(hms_buffer); + else if(display_mode == 1) display_ymd(ymd_buffer); + else display_hms(hms_buffer); + } +} \ No newline at end of file