mingmike
Published © GPL3+

Stopwatch with Arduino starter kit

Stopwatch with start/pause/lap/reset functions built with Arduino uno, LCD and two switches.

IntermediateShowcase (no instructions)12,231
Stopwatch with Arduino starter kit

Things used in this project

Story

Read more

Schematics

qq20180528045242_GpOUugAqbp.jpg

Code

Untitled file

Arduino
 //function: stopwatch with start/stop(button 1) and reset(button 2)
//start/pause button 1 
//add lap function success!!
//improve lap function scuuess!!
 #include<LiquidCrystal.h>
 LiquidCrystal lcd(12,11,7,6,5,4);

 int ss1 = 0, ss2 = 0;
 int pss1 = 0;
 int ms=0,sec =0, minute=0;
long interval = 98;
unsigned long last=0,dur,pre=0,last2=0,dur2;
 int num_rise=0;
bool reset=0,row=0;

void timeNprint(){
    unsigned long curr = millis();
    if (curr-pre>interval){
    pre=curr;
    ms++;
      if (ms==10) {sec++;ms=0;}
      if (sec==60) {sec=0;minute++;}
    lcd.setCursor(0,0);
      if (minute<10) lcd.print("0");
    lcd.print(minute);
    lcd.print(":");
    if (sec<10) lcd.print("0");
    lcd.print(sec);
    lcd.print(":");
    lcd.print(ms);
    }
}
void printTime(){
  lcd.setCursor(9,row);
  row=!row;
      if (minute<10) lcd.print("0");
    lcd.print(minute);
    lcd.print(":");
    if (sec<10) lcd.print("0");
    lcd.print(sec);
    lcd.print(":");
    lcd.print(ms);
  }
void resetNwelcome(){
  ms=0;minute=0;sec=0;
  lcd.setCursor(0,1);
  lcd.print("XW's Stopwatch");
  lcd.setCursor(0,0);
  lcd.print("Welcome to use");
}

void setup() {
lcd.begin(16,2);
pinMode(2,INPUT);
pinMode(3,INPUT);
}

void loop() {
  num_rise=0;
  resetNwelcome();
  ss1=digitalRead(2);
if (ss1 == HIGH) 
{
  num_rise++;
  last=millis();
  lcd.clear();
  while(1) //stop
  {
    switch(num_rise%2)
    {
      case 0:   //pause
      ss2=digitalRead(3);
      ss1=digitalRead(2);
      dur=millis()-last;
      if (ss2==HIGH) {reset=1;break;}
      else if(ss1==HIGH && dur>300) {
        num_rise++;
        last=millis();}
      break;
      case 1:   
      timeNprint();
      ss1=digitalRead(2);dur=millis()-last;
      if (ss1==HIGH &&dur>300) {
        num_rise++;
        last=millis();
        } 
      break;
      
     }
      ss2=digitalRead(3);
      dur2=millis()-last2;
    if(ss2==1 && dur2>300) 
    {
      last2=millis();
      printTime();
      }
    if(reset==1) 
    {reset=0;lcd.clear();row=0;break;}
   }
}
}

Credits

mingmike
0 projects • 2 followers
Contact

Comments

Please log in or sign up to comment.