Things used in this project

Hardware components:
Img 9622 copy 300x420
O Watch Base Kit
×1
Watch%20single
O Watch Sensor Kit
×1
Software apps and online services:
Ide web
Arduino IDE

Code

Watch 1Arduino
/*
 * Simple Watch
 *
 * Demonstrates the use of the Arduino Time library to make a simple digital watch
 *
 * Uses Arduino Time library http://playground.arduino.cc/code/time  
 * Maintained by Paul Stoffregen https://github.com/PaulStoffregen/Time
 *
 * This code is for the TinyScreen+ board by TinyCircuits used by O Watch http://tiny-circuits.com 
 *
 * This example is created by O Watch on 6 March 2016 http://theowatch.com 
 * 
*/

#include <TinyScreen.h> //include TinyScreen library
#include <TimeLib.h> //include the Arduino Time library
#include <SPI.h> //include this library for communication with OLED screen

TinyScreen display = TinyScreen(TinyScreenPlus); //Create the TinyScreen object

void setup()
{

  display.begin();                            //Initializes TinyScreen board
  display.setFlip(1);                         //Flips the TinyScreen rightside up for O Watch
  display.on();                               //Turns TinyScreen display on
  display.fontColor(TS_8b_White,TS_8b_Black); //Set the font color, font background
  display.setBrightness(10);                  //Set display brightness 0 - 15
  
  // Set the time and date. Change this to your current date and time.
  setTime(13,19,55,6,3,2016);    //values in the order hr,min,sec,day,month,year

}

void loop()
{

  display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type

  // Print date in US format MM:DD:YY (Switch the order in which day, month, year that you like to use)
  display.setCursor(15,8); //Set the cursor where you want to start printing the date
  display.print(monthShortStr(month()));
  display.print(" ");
  display.print(day()); 
  display.print(", ");
  display.print(year());

  display.setCursor(30,25); //Set the cursor where you want to start printing the date  
  display.print(dayStr(weekday()));

  display.setFont(liberationSansNarrow_16ptFontInfo);   //Set the font type

  // display time in HH:MM:SS 24 hour format
  display.setCursor(20,45); //Set the cursor where you want to start printing the time
  if(hour()<10) display.print(0); //print a leading 0 if hour value is less than 0
  display.print(hour());
  display.print(":");
  if(minute()<10) display.print(0); //print a leading 0 if minute value is less than 0
  display.print(minute());
  display.print(":");
  if(second()<10) display.print(0); //print a leading 0 if seconds value is less than 0
  display.print(second());
  display.print(" "); //just a empty space after the seconds
  delay(1000); //delay 1 second
  
}
Watch 2Arduino
/*
 * Simple Watch 2
 *
 * Demonstrates the use of the Arduino Time library to make a simple digital watch
 * In this we write functions to set time and date and learn how to use the buttons
 * Also learn Arduino 'switch' and 'for' statements/commands
 *
 * Uses Arduino Time library http://playground.arduino.cc/code/time  
 * Maintained by Paul Stoffregen https://github.com/PaulStoffregen/Time
 *
 * This code is for the TinyScreen+ board by TinyCircuits used by O Watch http://tiny-circuits.com 
 *
 * This example is created by O Watch on 6 March 2016 http://theowatch.com 
 * 
*/

#include <TinyScreen.h> //include TinyScreen library
#include <TimeLib.h> //include the Arduino Time library
#include <SPI.h> //include this library for communication with OLED screen


TinyScreen display = TinyScreen(TinyScreenPlus); //Create the TinyScreen object

void setup()
{
  display.begin();                            //Initializes TinyScreen board
  display.setFlip(1);                         //Flips the TinyScreen rightside up for O Watch
  display.on();                               //Turns TinyScreen display on
  display.fontColor(TS_8b_White,TS_8b_Black); //Set the font color, font background
  display.setBrightness(10);                  //Set display brightness 0 - 15
  
  // Set the time and date. Change this to your current date and time.
  setTime(13,19,55,6,3,2016);    //values in the order hr,min,sec,day,month,year

  //Show info at start to say what each button does
  display.setFont(liberationSansNarrow_14ptFontInfo);
  display.setCursor(35,30);
  display.print("Set");
  display.setFont(liberationSansNarrow_10ptFontInfo);
  display.setCursor(5,7);
  display.print("Shows Time 10s>");
  display.setCursor(60,45);
  display.print("Date>");  
  display.setCursor(5,45);
  display.print("<Time");
  delay(8000);
  display.clearScreen();
}

void loop()
{

  //Switch statement to select part of code to run based on button selection
  switch (display.getButtons()) 
  {

    //Run updateTime function 
    case TSButtonLowerLeft:
      display.on();
      updateTime();
      delay(200);
      display.off();
      break;

    //Run updateDate function
    case TSButtonLowerRight:
      delay(200);
      display.on();
      updateDate();
      delay(200);
      display.off();
      break;

    //Show time for 10 seconds 
    case TSButtonUpperRight:
      display.on();
      for(int i=0; i<11; i++)
      {
        display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type
        // Print date in US format MM:DD:YY (Switch the order in which day, month, year that you like to use)
        display.setCursor(15,8); //Set the cursor where you want to start printing the date
        display.print(monthShortStr(month()));
        display.print(" ");
        display.print(day()); 
        display.print(", ");
        display.print(year());
      
        display.setCursor(30,25); //Set the cursor where you want to start printing the date  
        display.print(dayStr(weekday()));
      
        display.setFont(liberationSansNarrow_16ptFontInfo);   //Set the font type
      
        // display time in HH:MM:SS 24 hour format
        display.setCursor(20,45); //Set the cursor where you want to start printing the time
        if(hour()<10) display.print(0); //print a leading 0 if hour value is less than 0
        display.print(hour());
        display.print(":");
        if(minute()<10) display.print(0); //print a leading 0 if minute value is less than 0
        display.print(minute());
        display.print(":");
        if(second()<10) display.print(0); //print a leading 0 if seconds value is less than 0
        display.print(second());
        display.print(" "); //just a empty space after the seconds
        delay(1000); //delay 1 second           
      }
      delay(200);
      display.clearScreen();
      display.off();
      break;
    
  }
  delay(200);
}


//Function to update time
void updateTime()
{

  //Set hour
  display.clearScreen();
  display.setFont(liberationSansNarrow_8ptFontInfo);   //Set the font type
  display.setCursor(2,15);
  display.print("<Save | Change>");
  display.setCursor(15,40);
  display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type
  display.print("Set Hour:");
  int myhour=hour();
  while(!display.getButtons(TSButtonUpperLeft))
  {
    display.setCursor(75,40);
    if(myhour<10) display.print("0");
    display.print(myhour);
    if(display.getButtons(TSButtonUpperRight))
      myhour++;
    if(display.getButtons(TSButtonLowerRight))
      myhour--;
    if(myhour<0) myhour=24;
    if(myhour>24) myhour=0;
    delay(200);
  }
  setTime(myhour, minute(), second(), day(), month(), year());
  delay(500);
  display.clearScreen();
  display.setCursor(10,25);
  display.print("Hour Saved");
  delay(1000);

  
  //Set minute
  display.clearScreen();
  display.setFont(liberationSansNarrow_8ptFontInfo);   //Set the font type
  display.setCursor(2,15);
  display.print("<Save | Change>");
  display.setCursor(15,40);
  display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type
  display.print("Set Mins:");
  int myminute=minute();
  while(!display.getButtons(TSButtonUpperLeft))
  {
    display.setCursor(75,40);
    if(myminute<10) display.print("0");
    display.print(myminute);
    if(display.getButtons(TSButtonUpperRight))
      myminute++;
    if(display.getButtons(TSButtonLowerRight))
      myminute--;
    if(myminute<0) myminute=60;
    if(myminute>60) myminute=0;
    delay(200);
  }
  setTime(hour(), myminute, second(), day(), month(), year());
  delay(500);
  display.clearScreen();
  display.setCursor(10,25);
  display.print("Minute Saved");
  delay(1000);

  //Set second
  display.clearScreen();
  display.setFont(liberationSansNarrow_8ptFontInfo);   //Set the font type
  display.setCursor(2,15);
  display.print("<Save | Change>");
  display.setCursor(15,40);
  display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type
  display.print("Set Secs:");
  int mysecond=second();
  while(!display.getButtons(TSButtonUpperLeft))
  {
    display.setCursor(75,40);
    if(mysecond<10) display.print("0");
    display.print(mysecond);
    if(display.getButtons(TSButtonUpperRight))
      mysecond++;
    if(display.getButtons(TSButtonLowerRight))
      mysecond--;
    if(mysecond<0) mysecond=60;
    if(mysecond>60) mysecond=0;
    delay(200);
  }
  setTime(hour(), minute(), mysecond, day(), month(), year());
  delay(500);
  display.clearScreen();
  display.setCursor(10,25);
  display.print("Second Saved");
  delay(1000);
  display.clearScreen();
  
}

//Function to update time
void updateDate()
{

  //Set day
  display.clearScreen();
  display.setFont(liberationSansNarrow_8ptFontInfo);   //Set the font type
  display.setCursor(2,15);
  display.print("<Save | Change>");
  display.setCursor(10,40);
  display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type
  display.print("Set Day:");
  int myday=day();
  while(!display.getButtons(TSButtonUpperLeft))
  {
    display.setCursor(75,40);
    if(myday<10) display.print("0");
    display.print(myday);
    if(display.getButtons(TSButtonUpperRight))
      myday++;
    if(display.getButtons(TSButtonLowerRight))
      myday--;
    if(myday<0) myday=31;
    if(myday>31) myday=0;
    delay(200);
  }
  setTime(hour(), minute(), second(), myday, month(), year());
  delay(500);
  display.clearScreen();
  display.setCursor(10,25);
  display.print("Day Saved");
  delay(1000);

  
  //Set month
  display.clearScreen();
  display.setFont(liberationSansNarrow_8ptFontInfo);   //Set the font type
  display.setCursor(2,15);
  display.print("<Save | Change>");
  display.setCursor(10,40);
  display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type
  display.print("Set Month:");
  int mymonth=month();
  while(!display.getButtons(TSButtonUpperLeft))
  {
    display.setCursor(75,40);
    if(mymonth<10) display.print("0");
    display.print(mymonth);
    if(display.getButtons(TSButtonUpperRight))
      mymonth++;
    if(display.getButtons(TSButtonLowerRight))
      mymonth--;
    if(mymonth<0) mymonth=60;
    if(mymonth>60) mymonth=0;
    delay(200);
  }
  setTime(hour(), minute(), second(), day(), mymonth, year());
  delay(500);
  display.clearScreen();
  display.setCursor(10,25);
  display.print("Month Saved");
  delay(1000);

  //Set Year
  display.clearScreen();
  display.setFont(liberationSansNarrow_8ptFontInfo);   //Set the font type
  display.setCursor(2,15);
  display.print("<Save | Change>");
  display.setCursor(10,40);
  display.setFont(liberationSansNarrow_12ptFontInfo);   //Set the font type
  display.print("Set Year:");
  int myyear=year();
  while(!display.getButtons(TSButtonUpperLeft))
  {
    display.setCursor(68,40);
    if(myyear<10) display.print("0");
    display.print(myyear);
    if(display.getButtons(TSButtonUpperRight))
      myyear++;
    if(display.getButtons(TSButtonLowerRight))
      myyear--;
    if(myyear<2010) myyear=2030;
    if(myyear>2030) myyear=2010;
    delay(200);
  }
  setTime(hour(), minute(), second(), day(), month(), myyear);
  delay(500);
  display.clearScreen();
  display.setCursor(10,25);
  display.print("Year Saved");
  delay(1000);
  display.clearScreen();
  
}

Credits

Owatchlogofebsmall
O Watch

Make your own smartwatch. Learn 3D design and Arduino coding.

Contact

Replications

Did you replicate this project? Share it!

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Word Clock on the O-Watch
Easy
  • 523
  • 9

Protip

We'll build on the Simple RTC Watch to turn our O-Watch into a Mini Word Clock, which uses an 8 x 8 grid of letters to spell out the time.

Animated Word Clock on the O-Watch
Easy
  • 424
  • 6

A modified version of J Koger's Mini Word Clock for O-Watch, now with an animated digital rain effect.

Googly Eye O-Watch
Easy
  • 110
  • 3

Protip

Inspired by Mike Mak's Eye Clock, now the O-Watch can show the time with two googly eyes: hours (left eye) and minutes (right eye).

2048 Sliding Tile Game for the O Watch
Easy
  • 258
  • 5

Full instructions

This is a sliding tile game for the O Watch based on the simple and addicting game 2048 by Gabriele Cirulli.

Getting Started with O Watch
Easy
  • 520
  • 8

Full instructions

Assemble the O Watch, configure the Arduino IDE and load your first program.

Simple Watch Using RTC
Easy
  • 1,077
  • 4

Full instructions

The O-Watch Simple Watch code tweaked to use the Arduino Zero's built-in RTC, plus a couple other tweaks.

ProjectsCommunitiesTopicsContestsLiveAppsBetaFree StoreBlogAdd projectSign up / Login
Feedback