O Watch
Published © MIT

Basic O Watch Program

Basic program to add time and date functions to your O Watch.

BeginnerFull instructions provided1,152
Basic O Watch Program

Things used in this project

Hardware components

O Watch Base Kit
O Watch Base Kit
×1
O Watch Sensor Kit
O Watch Sensor Kit
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

Watch 1

Arduino
/*
 * 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 2

Arduino
/*
 * 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

O Watch

O Watch

9 projects • 15 followers
Make your own smartwatch. Learn 3D design and Arduino coding.

Comments