Introduction: Arduino Stopwatch
This Instructable will show you how to make a stop watch out of an Arduino.
Step 1: What You Will Need
Please buy through these Amazon links as it helps me to keep making these Instructables (A small cut of Amazon's profit from the sale is given to me - It doesn't cost you anything!)
You Will Need:
- 1x Arduino Uno:
-US Link: http://amzn.to/2mikwN9
-UK Link: http://amzn.to/2e9HwgA
- 1x LCD Keypad Shield:
-US Link: http://amzn.to/2neqIEW
-UK Link: http://amzn.to/2fnLHTx
- 1x USB A - B Connector Cable:
-US Link: http://amzn.to/2ne6xqW
-UK Link: http://amzn.to/2e9NL3L
What I Recommend:
- Amazon Prime so you can get all your items the next day:
-US Link: https://www.amazon.com/tryprimefree?ref_=assoc_tag...
-UK Link: http://www.amazon.co.uk/tryprimefree?tag=instructabl00-21
- You could attach some of these magnets to attach the stopwatch onto nearly anything metal:
-US Link: http://amzn.to/2miAqqS
-UK Linkhttps://goo.gl/m4Bg1N
- Arduino For Dummies (very helpful when learning code):
-US Link: http://amzn.to/2mAWM99
-UK Link: https://www.amazon.co.uk/gp/product/1118446372/ref...
or
- Arduino Projects For Dummies:
-US Link: http://amzn.to/2mipWrj
-UK Link: http://amzn.to/2fMuCoS
Step 2: Slot the LCD Display Onto the Arduino
This step is very simple just slot the LCD display onto the Arduino.
Step 3: Connect and Install the Program
Just connect your Arduino to The Computer and install the program.
Update - Please use the Modified Stopwatch Program.
Step 4: Run Your Stopwatch
Now just run your stopwatch.
41 Comments
2 years ago
Any thoughts on making it work with seperate start and stop buttons? I want to make a trap timer. I have tapeswitches. Will need to output to dot matrix printer, but this looks like a good starting place.
Tip 3 years ago
lcd.print(m, 0);
lcd.print("m ");
lcd.print(s, 0);
lcd.print(".");
if (ms <100) lcd.print ("0"); // This must be added or you will get false ms if the time is under 100 ms.
if (ms <10) lcd.print ("0"); //This must be added or you will get false time for ms under 10 ms. I.E it will show for example 1.3 seconds when it really is 1.003 seconds
if (h < 10)
{
lcd.print(ms, 0);
lcd.print(" Sec ");
5 years ago on Introduction
I made it thank you, Would you allow me to make a video on YouTube of this working?
Reply 4 years ago
Sorry about the late replay.
Of course you can as long as you credit this page and me!
8 years ago on Introduction
Very cool idea and a great starting point, thanks!!!
I did a bit of rewrite to make it more accurate and display the time as it progresses plus other tweaks :
/*
Standalone Arduino StopWatch
By Conor M - 11/05/15
Modified by Elac - 12/05/15
*/
// call the necessary libraries
#include <SPI.h>
#include <LiquidCrystal.h>
// these are the pins used on the shield for this sketch
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
// variables used on more than 1 function need to be declared here
unsigned long start, finished, elapsed;
boolean r = false;
// Variables for button debounce time
long lastButtonPressTime = 0; // the last time the button was pressed
long debounceDelay = 50; // the debounce time; keep this as low as possible
void setup()
{
lcd.begin(16, 2); // inicialize the lcd (16 chars, 2 lines)
// a little introduction :)
lcd.setCursor(4, 0); // set the cursor to first character on line 1 - NOT needed (it sets automatically on lcd.begin()
lcd.print("Arduino");
lcd.setCursor(3, 1); // set the cursor to 4th character on line 2
lcd.print("StopWatch");
delay(2000); // wait 2 seconds
lcd.clear(); // clear the display
lcd.print("Press select for");
lcd.setCursor(2, 1); // set the cursor to 3rd character on line 2
lcd.print("Start & Stop");
}
void loop()
{
CheckStartStop();
DisplayResult();
}
void CheckStartStop()
{
int x = analogRead (0); // assign 'x' to the Arduino's AnalogueInputs (Shield's buttons)
if (x < 800 && x > 600 ) // if the button is SELECT
{
if ((millis() - lastButtonPressTime) > debounceDelay)
{
if (r == false)
{
lcd.clear();
lcd.setCursor(2, 0); // needed
lcd.print("Elapsed Time");
start = millis(); // saves start time to calculate the elapsed time
}
else if (r == true)
{
lcd.setCursor(2, 0); // needed
lcd.print(" Final Time ");
}
r = !r;
}
lastButtonPressTime = millis();
}
}
void DisplayResult()
{
if (r == true)
{
finished = millis(); // saves stop time to calculate the elapsed time
// declare variables
float h, m, s, ms;
unsigned long over;
// MATH time!!!
elapsed = finished - start;
h = int(elapsed / 3600000);
over = elapsed % 3600000;
m = int(over / 60000);
over = over % 60000;
s = int(over / 1000);
ms = over % 1000;
// display the results
lcd.setCursor(0, 1);
lcd.print(h, 0); // display variable 'h' - the 0 after it is the number of algorithms after a comma (ex: lcd.print(h, 2); would print 0,00
lcd.print("h "); // and the letter 'h' after it
lcd.print(m, 0);
lcd.print("m ");
lcd.print(s, 0);
lcd.print("s ");
if (h < 10)
{
lcd.print(ms, 0);
lcd.print("ms ");
}
}
}
Reply 4 years ago
thanks for the code!
Reply 6 years ago
Elac,
I only want to count time while the button or another input is present , how would I go about this?
4 years ago
Great Project!
5 years ago
I made it, thank you very much!
6 years ago
thank you very much
6 years ago
I'm struggling to get external buttons to work - I want to add a start and stop but keep getting stuck! Anybody done this with the modified code? :)
7 years ago
Welcome to join the group :)
https://www.facebook.com/groups/305526369783769/
7 years ago
how to install the program I don't see anything on my computer after connecting the arduino to it. do we need some software like matlab or something?
Reply 7 years ago
Make sure you have downloaded the arduino software from https://www.arduino.cc/en/Main/Software
7 years ago
I want a coding I want to connect ir sensor to micro servo so that if something pass from front of ir sensor servo rotates at a 90 degree angle and returns to its initial position. I have a ARDUINO UNO for the purpose.... Can anybody do coding for this..PLZ PLZ PLZ THANK YOU... HOPE U REPLY...
please reply here --http://arduino.stackexchange.com/questions/28666/coding-for-connect-servo-with-ir-sensor-to-ardiuino
Reply 7 years ago
The code is there for you to use
Reply 7 years ago
Check out one of my other instructables, how to make an arduino web server, it uses a servo, hope it helps
☺
7 years ago
nice
7 years ago
Outstanding. I am using it and am happy to say it works without problem.
7 years ago
can somebody give me a version for measuring and displaying seconds,miliseconds and microseconds all on 3 digits each . If yes thanks in advance and contact me at mmedocean@gmail.com