
Network clock using 7 segment.
Dependencies: SNTPClient WIZnetInterface mbed
Fork of mbed_blinky by
main.cpp
- Committer:
- nanjsk
- Date:
- 2016-03-01
- Revision:
- 11:8a1ab8deea2b
- Parent:
- 4:81cea7a352b0
- Child:
- 12:e60d3d6f24e8
File content as of revision 11:8a1ab8deea2b:
#include "mbed.h" #include "segment.h" #include "EthernetInterface.h" #include "SNTPClient.h" Serial pc(USBTX,USBRX); EthernetInterface eth; datetime ntptime; 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; 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); } }