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 eunkyoung kim

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?

UserRevisionLine numberNew 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 }