Hey, im trying to create a digital watch on arduino for an exam project and are really struggling with how to create a stopwatch that can run simultanious with the original clock. So far i managed to use time.h in order to have a normal timer on the lcd display, but i want to create a timer with start/stop function that start at 00:00:00 and can be restartet on command like a normal digital watch. However after spending several day trying to figure this problem out i havnt been able to find any good examples on how to do so.
Can you help me out with some idea's, examples etc. on how to solve my problem? =)
#include <Time.h> //Inkuderer time bibloteket http://playground.arduino.cc/code/time
#include <IRremote.h> //Inkluderer IRremote bibloteket http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
#include <LiquidCrystal.h> //Inkluderer LiquidCrystal bibloteket http://arduino.cc/en/Tutorial/LiquidCrystal
#define prev 0xFF22DD //Define er for å definere de forskjellige knappene på en måte som gjør det mer oversiktig og enklere å programere etter ønske
#define next 0xFF02FD
#define vol1 0xFFE01F
#define vol2 0xFFA857
#define play 0xFFC23D
#define CH1 0xFFA25D
#define CH2 0xFF629D
#define CH3 0xFFE21D
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Setter lcd input til 12,11,5,4,3,2.
const int IR_RECIEVER = 10; //Setter IR input mottak til 10.
IRrecv irrecv(IR_RECIEVER);
decode_results results;
void setup()
{
lcd.begin(16, 2);
irrecv.enableIRIn(); //Starter mottakeren.
}
void loop()
{
boolean r = 0;
int p = 0;
irDecode(&p,&r);
while(p==0)
{
clockDisplay(); //Viser klokken.
irDecode(&p,&r); //adressen til og r blir sendt som argument/input
}
lcd.clear(); //Brukes for å cleare displayet sånn at man ikke sitter igjen med gamle verdier fra forrige whilie løkke.
while(p==1)
{
timer(); //Viser stoppeklokke.
irDecode(&p,&r);
}
lcd.clear();
while(p==2)
{
setAlarm(); //Viser skjerm for mulighet til å stille alarm.
irDecode(&p,&r);
}
lcd.clear();
}
void clockDisplay()
{
lcd.setCursor(0,1); //Kolonne, rad.
lcd.print(hour());
lcd.print(":");
lcd.print(minute());
lcd.print(":");
lcd.print(second());
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(day());
lcd.print(" ");
lcd.print(month());
lcd.print(" ");
lcd.print(year());
}
void timer()
{
time_t t = now(); //Lagrer nåværende verdi.
lcd.setCursor(0,0);
lcd.print("Start/Stop");
lcd.setCursor(0,1);
lcd.print(hour(t));
lcd.print(minute(t));
lcd.print(second(t));
}
void setAlarm()
{
lcd.setCursor(0,0);
lcd.print("Alarm");
lcd.setCursor(0,1);
lcd.print("instilling");
}
void irDecode(int *p, boolean *r) //Decoding av input fra fjernkontroll.
{
int nextCase = *p;// verdien til nextCase setter til verdien som befinner seg i adressen til p
if (irrecv.decode(&results))
{
irrecv.resume(); //Mottar neste verdi.
switch (results.value) //Mottar verdien fra fjernkontrollen (HEX) som man lager case ut av.
{
case next:
switch (nextCase)
{
case 0: *p = 1; break; //Lager løkke for å få knappen til å velge mellom vilken funksjon den skal vise på skjermen.
case 1: *p = 2; break;
default: *p=0; break;
}
break; //Case next.
case play:
*r = !*r;
}
}
}
This is my code so far, sorry that the comments are in norwegian =)