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

main.cpp

Committer:
eunkyoungkim
Date:
2015-06-26
Revision:
0:6e799e373101

File content as of revision 0:6e799e373101:

#include "mbed.h"
#include "EthernetInterface.h"
#include "SNTPClient.h"
#include "SSD1306.h"


#if defined(TARGET_WIZwiki_W7500)
    EthernetInterface eth;
 /*   DigitalOut led1(LED1);
    DigitalOut led2(LED2);
    DigitalOut led3(LED3);
    DigitalOut led4(LED4); */
    DigitalIn  sw(PC_0);
#elif 

#endif
TCPSocketConnection sock;

DigitalOut myled(PA_6);

Serial pc(USBTX, USBRX); // tx, rx

datetime ntptime;
struct tm timeinfo;


int main()
{
  uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
  uint8_t count=0;
  uint8_t time_x_offset =0;
  uint8_t old_offset =0;

  
    init();
    cls();
    OLED_DrawBMP(0,0,128,8,(unsigned char *)wiznet);
    wait(1);
     cls();
    eth.init(mac_addr); //Use DHCP
    eth.connect();
    
   
    printf("IP Address is %s\n\r", eth.getIPAddress());

    SNTPClient sntp("time.nist.gov", 40);   // timezone: Korea, Republic of
    sntp.connect();
    if(sntp.getTime(&ntptime) == true)
    {
  //          printf("%d-%d-%d, %d:%d:%d\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss);
 //           wait(1.0);
    }
    else
    {
        while(sntp.getTime(&ntptime) == true)
        {
            break;
        }
    }

      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:%d:%d\r\n", 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);
     
    while (1) {
         char buffer[32];
        time_t seconds = time(NULL);
              
       // printf("Time as a basic string = %s\r\n", ctime(&seconds));
        if(count == 50)
        {
            cls();
            count++;
        }
        if(count > 50)
        {
           time_x_offset =0;              
           if(old_offset != time_x_offset){
               old_offset = time_x_offset;
            
               }


            //strftime (buffer,32,"%I:%M:%S ",localtime(&seconds));
            strftime (buffer,32,"%I:%M",localtime(&seconds));
            LED_P23x32Str(time_x_offset,3,buffer);

            //intBigTime(buffer);
            if(sw == 0)
            {
                count = 0;   
                cls();
            
            }
        
        }
        else
        {
           
             strftime(buffer, 32,"%a %d %b %Y", localtime(&seconds));
             OLED_ShowStr(10, 3, buffer,1 );
             strftime(buffer, 32, "%I:%M:%S %p", localtime(&seconds));
             OLED_ShowStr(10, 4, buffer,2 );
             count ++;
        }
         
         
         
         

    }

}