Instructables
loading
loading

Standalone Arduino StopWatch - SainSmart LCD Keypad Shield

Picture of Standalone Arduino StopWatch - SainSmart LCD Keypad Shield
2013-09-20 03.20.59.jpg
So, for my first Instructable, I'll also share with you my first project: A Standalone Arduino StopWatch.



I must admit that this wasn't FULLY created by me. I took the idea of another stopwatch where you read the info on the serial port and then changed it to use the Sainsmart LCD Keypad Shield.

The original project, which needed electronic assembly can be found here.



So, being my first project, I learned A LOT about programming in C (I have a few basic knowledge of programming, but thats it). Knowing there are a lot of guys with the same issues as me, I commented the HECK out of this code (and even included some redundancies on purpose, to explain the concepts further). I hope all the pros here will forgive me, but it's also a way for me to know if I got things right when you all review it :P


So let's get down to business!


Materials needed:

- Arduino Uno or equivalent (that fits the Shield);
- Sainsmart LCD Keypad Shield;
- Aditional power source (I use this) - optional.

___________________________________

I'm assuming you already know how to upload sketches to your Arduino.


Connect the shield and upload the code.
Use your external battery (or USB connection) to power the Arduino and have fun!

___________________________________

Final Notes:

If you reviewed the code, you will note commented redundancies, as well as LOTS of commenting.
I did this to explain some stuff that I had to find out for myself.

I hope the n00bs (like me :D) will find it helpfull.


Buttons on the Shield:
I found online 2 ways to use the shield's buttons:
- http://www.hobbytronics.co.uk/arduino-lcd-keypad-shield
- http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)

The first one uses conditions to find out which button is being pressed.
The second one actually defines the buttons.

For clarity, I used the first one, as I think is easier to follow up how the numbers are calculaded (check the code on the first link).
On my sketch I used the line: "if (x < 600 && x > 400)", unlike the original one on the link, so that ONLY the intended button works, not any other.

You can re-write the program to the second option if you like, it will help you understand further programming in C.

To be honest, I haven't completely understand how the Arduino takes a number between 400 and 600 and categorizes it as the LEFT button, anyone care to explain? :D


The millis() function:
As I understand, you can't make the clock start counting ONLY when you press the button. It starts right away when the Arduino is turned on and the program starts running (press SELECT before starting the counting and it will return the elapsed time since it's on). The millis() function is called and stores that time into a variable when you start counting (so it knows when it started) and when you want to see the elapsed time (so it knows when it "stopped") and does the math from there.
Nothing special, just thought I'd share this cool finding.



So here's my first project, hope you enjoy, and please, for the sake of my learning curve, make reviews, critics, suggestions! :D


Have fun!
bbeaton11 month ago

"To be honest, I haven't completely understand how the Arduino takes a number between 400 and 600 and categorizes it as the LEFT button, anyone care to explain? :D"

Answer:

Since all of the buttons are using a single analogue pin, Each button can complete the circuit. The voltage supplied to the buttons is 5V. The Analogue pin has an analogue to digital converter (ADC) which converts a certain voltage detected to a digital number with a maximum value of 1024.

So:

- 0 volts reads as a digital 0

- 1 volt reads as a digital 205 (approximately)

- 2 volts a digital 410 (approximately)

- 5 volts a digital 1024 (and any voltage higher such as 5.3 also reads as 1024)

So on the left button they place a resistor which in parallel with another resistor feeds between 1 volt(digital 200) and 2 volts(digital 400)

and so on for the rest of the buttons.

The reset button is (should be) directly connected to the reset pin.

Conor M2 months ago

Really good

can you edit is so it can be stopped and started when wanted without having to hold down select?

palme1 year ago

Hey,

nice work. where can I find the sketch please?

BR
Andreas