The Smart Watch using SSD1306 and I2C. The Time obtain using SNTP protocol from NTP Server.
Dependencies: SNTPClinet WIZnetInterface mbed-src
Fork of SSD1306_smart_watch by
main.cpp@2:19e8cd8a0e0c, 2015-06-29 (annotated)
- Committer:
- eunkyoungkim
- Date:
- Mon Jun 29 04:27:44 2015 +0000
- Revision:
- 2:19e8cd8a0e0c
- Parent:
- 0:6e799e373101
modify SNTPClient
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eunkyoungkim | 0:6e799e373101 | 1 | #include "mbed.h" |
eunkyoungkim | 0:6e799e373101 | 2 | #include "EthernetInterface.h" |
eunkyoungkim | 0:6e799e373101 | 3 | #include "SNTPClient.h" |
eunkyoungkim | 0:6e799e373101 | 4 | #include "SSD1306.h" |
eunkyoungkim | 0:6e799e373101 | 5 | |
eunkyoungkim | 0:6e799e373101 | 6 | |
eunkyoungkim | 0:6e799e373101 | 7 | #if defined(TARGET_WIZwiki_W7500) |
eunkyoungkim | 0:6e799e373101 | 8 | EthernetInterface eth; |
eunkyoungkim | 0:6e799e373101 | 9 | /* DigitalOut led1(LED1); |
eunkyoungkim | 0:6e799e373101 | 10 | DigitalOut led2(LED2); |
eunkyoungkim | 0:6e799e373101 | 11 | DigitalOut led3(LED3); |
eunkyoungkim | 0:6e799e373101 | 12 | DigitalOut led4(LED4); */ |
eunkyoungkim | 0:6e799e373101 | 13 | DigitalIn sw(PC_0); |
eunkyoungkim | 0:6e799e373101 | 14 | #elif |
eunkyoungkim | 0:6e799e373101 | 15 | |
eunkyoungkim | 0:6e799e373101 | 16 | #endif |
eunkyoungkim | 0:6e799e373101 | 17 | TCPSocketConnection sock; |
eunkyoungkim | 0:6e799e373101 | 18 | |
eunkyoungkim | 0:6e799e373101 | 19 | DigitalOut myled(PA_6); |
eunkyoungkim | 0:6e799e373101 | 20 | |
eunkyoungkim | 0:6e799e373101 | 21 | Serial pc(USBTX, USBRX); // tx, rx |
eunkyoungkim | 0:6e799e373101 | 22 | |
eunkyoungkim | 0:6e799e373101 | 23 | datetime ntptime; |
eunkyoungkim | 0:6e799e373101 | 24 | struct tm timeinfo; |
eunkyoungkim | 0:6e799e373101 | 25 | |
eunkyoungkim | 0:6e799e373101 | 26 | |
eunkyoungkim | 0:6e799e373101 | 27 | int main() |
eunkyoungkim | 0:6e799e373101 | 28 | { |
eunkyoungkim | 0:6e799e373101 | 29 | uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; |
eunkyoungkim | 0:6e799e373101 | 30 | uint8_t count=0; |
eunkyoungkim | 0:6e799e373101 | 31 | uint8_t time_x_offset =0; |
eunkyoungkim | 0:6e799e373101 | 32 | uint8_t old_offset =0; |
eunkyoungkim | 0:6e799e373101 | 33 | |
eunkyoungkim | 0:6e799e373101 | 34 | |
eunkyoungkim | 0:6e799e373101 | 35 | init(); |
eunkyoungkim | 0:6e799e373101 | 36 | cls(); |
eunkyoungkim | 0:6e799e373101 | 37 | OLED_DrawBMP(0,0,128,8,(unsigned char *)wiznet); |
eunkyoungkim | 0:6e799e373101 | 38 | wait(1); |
eunkyoungkim | 0:6e799e373101 | 39 | cls(); |
eunkyoungkim | 0:6e799e373101 | 40 | eth.init(mac_addr); //Use DHCP |
eunkyoungkim | 0:6e799e373101 | 41 | eth.connect(); |
eunkyoungkim | 0:6e799e373101 | 42 | |
eunkyoungkim | 0:6e799e373101 | 43 | |
eunkyoungkim | 0:6e799e373101 | 44 | printf("IP Address is %s\n\r", eth.getIPAddress()); |
eunkyoungkim | 0:6e799e373101 | 45 | |
eunkyoungkim | 0:6e799e373101 | 46 | SNTPClient sntp("time.nist.gov", 40); // timezone: Korea, Republic of |
eunkyoungkim | 0:6e799e373101 | 47 | sntp.connect(); |
eunkyoungkim | 0:6e799e373101 | 48 | if(sntp.getTime(&ntptime) == true) |
eunkyoungkim | 0:6e799e373101 | 49 | { |
eunkyoungkim | 0:6e799e373101 | 50 | // printf("%d-%d-%d, %d:%d:%d\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss); |
eunkyoungkim | 0:6e799e373101 | 51 | // wait(1.0); |
eunkyoungkim | 0:6e799e373101 | 52 | } |
eunkyoungkim | 0:6e799e373101 | 53 | else |
eunkyoungkim | 0:6e799e373101 | 54 | { |
eunkyoungkim | 0:6e799e373101 | 55 | while(sntp.getTime(&ntptime) == true) |
eunkyoungkim | 0:6e799e373101 | 56 | { |
eunkyoungkim | 0:6e799e373101 | 57 | break; |
eunkyoungkim | 0:6e799e373101 | 58 | } |
eunkyoungkim | 0:6e799e373101 | 59 | } |
eunkyoungkim | 0:6e799e373101 | 60 | |
eunkyoungkim | 0:6e799e373101 | 61 | timeinfo.tm_mon = ntptime.mo-1; |
eunkyoungkim | 0:6e799e373101 | 62 | timeinfo.tm_mday = ntptime.dd; |
eunkyoungkim | 0:6e799e373101 | 63 | timeinfo.tm_hour = ntptime.hh; |
eunkyoungkim | 0:6e799e373101 | 64 | timeinfo.tm_min = ntptime.mm; |
eunkyoungkim | 0:6e799e373101 | 65 | timeinfo.tm_sec = ntptime.ss; |
eunkyoungkim | 0:6e799e373101 | 66 | timeinfo.tm_year = ntptime.yy-1900; |
eunkyoungkim | 0:6e799e373101 | 67 | // printf("%d-%d, %d:%d:%d\r\n", timeinfo.tm_mon, timeinfo.tm_mday, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec); |
eunkyoungkim | 0:6e799e373101 | 68 | time_t t =mktime(&timeinfo); |
eunkyoungkim | 0:6e799e373101 | 69 | |
eunkyoungkim | 0:6e799e373101 | 70 | set_time(t); |
eunkyoungkim | 0:6e799e373101 | 71 | t = time(NULL); |
eunkyoungkim | 0:6e799e373101 | 72 | |
eunkyoungkim | 0:6e799e373101 | 73 | while (1) { |
eunkyoungkim | 0:6e799e373101 | 74 | char buffer[32]; |
eunkyoungkim | 0:6e799e373101 | 75 | time_t seconds = time(NULL); |
eunkyoungkim | 0:6e799e373101 | 76 | |
eunkyoungkim | 0:6e799e373101 | 77 | // printf("Time as a basic string = %s\r\n", ctime(&seconds)); |
eunkyoungkim | 0:6e799e373101 | 78 | if(count == 50) |
eunkyoungkim | 0:6e799e373101 | 79 | { |
eunkyoungkim | 0:6e799e373101 | 80 | cls(); |
eunkyoungkim | 0:6e799e373101 | 81 | count++; |
eunkyoungkim | 0:6e799e373101 | 82 | } |
eunkyoungkim | 0:6e799e373101 | 83 | if(count > 50) |
eunkyoungkim | 0:6e799e373101 | 84 | { |
eunkyoungkim | 0:6e799e373101 | 85 | time_x_offset =0; |
eunkyoungkim | 0:6e799e373101 | 86 | if(old_offset != time_x_offset){ |
eunkyoungkim | 0:6e799e373101 | 87 | old_offset = time_x_offset; |
eunkyoungkim | 0:6e799e373101 | 88 | |
eunkyoungkim | 0:6e799e373101 | 89 | } |
eunkyoungkim | 0:6e799e373101 | 90 | |
eunkyoungkim | 0:6e799e373101 | 91 | |
eunkyoungkim | 0:6e799e373101 | 92 | //strftime (buffer,32,"%I:%M:%S ",localtime(&seconds)); |
eunkyoungkim | 0:6e799e373101 | 93 | strftime (buffer,32,"%I:%M",localtime(&seconds)); |
eunkyoungkim | 0:6e799e373101 | 94 | LED_P23x32Str(time_x_offset,3,buffer); |
eunkyoungkim | 0:6e799e373101 | 95 | |
eunkyoungkim | 0:6e799e373101 | 96 | //intBigTime(buffer); |
eunkyoungkim | 0:6e799e373101 | 97 | if(sw == 0) |
eunkyoungkim | 0:6e799e373101 | 98 | { |
eunkyoungkim | 0:6e799e373101 | 99 | count = 0; |
eunkyoungkim | 0:6e799e373101 | 100 | cls(); |
eunkyoungkim | 0:6e799e373101 | 101 | |
eunkyoungkim | 0:6e799e373101 | 102 | } |
eunkyoungkim | 0:6e799e373101 | 103 | |
eunkyoungkim | 0:6e799e373101 | 104 | } |
eunkyoungkim | 0:6e799e373101 | 105 | else |
eunkyoungkim | 0:6e799e373101 | 106 | { |
eunkyoungkim | 0:6e799e373101 | 107 | |
eunkyoungkim | 0:6e799e373101 | 108 | strftime(buffer, 32,"%a %d %b %Y", localtime(&seconds)); |
eunkyoungkim | 0:6e799e373101 | 109 | OLED_ShowStr(10, 3, buffer,1 ); |
eunkyoungkim | 0:6e799e373101 | 110 | strftime(buffer, 32, "%I:%M:%S %p", localtime(&seconds)); |
eunkyoungkim | 0:6e799e373101 | 111 | OLED_ShowStr(10, 4, buffer,2 ); |
eunkyoungkim | 0:6e799e373101 | 112 | count ++; |
eunkyoungkim | 0:6e799e373101 | 113 | } |
eunkyoungkim | 0:6e799e373101 | 114 | |
eunkyoungkim | 0:6e799e373101 | 115 | |
eunkyoungkim | 0:6e799e373101 | 116 | |
eunkyoungkim | 0:6e799e373101 | 117 | |
eunkyoungkim | 0:6e799e373101 | 118 | |
eunkyoungkim | 0:6e799e373101 | 119 | } |
eunkyoungkim | 0:6e799e373101 | 120 | |
eunkyoungkim | 0:6e799e373101 | 121 | } |