Introduction: Arduino Kitchen Timer

Picture of Arduino Kitchen Timer

This instructable will guide you through creating your own Arduino based Kitchen Timer. This is a quite simple project, requiring little or no programming or electronics knowledge, just the willingness to learn and fiddle - an ability most useful for modern man.

This kitchen timer is simple enough, press and hold a button and it will count up it multiples of five minutes, until you release the button. Upon doing so the timer will flash, and begin counting down. This timer includes an alarm and a display, with a piercing piezo buzzer to get your attention.

The arduino, laptop, protoshield, and USB Cable excluded; I took every electrical component from an old or broken device. Try to recycle things, its easy to get hold of broken electronics for free so make the most of it! See any jumpers on this design? No, paper clips are much better - cheap as chips and more sturdy too! :)

If you have any successes, or failures, modifications, or suggestions, please post them in the comments section below! I would love to see photos of your finished project!

Step 1: Components

Picture of Components

For this instructable you will need:

An Arduino - I used the duemillanove, but you could always make one instead
Jumper Wires - I ran out of wire so used paperclips for this, but you could alway make your own
A momentary push button - I assume that you could use the one built into the protoshield!
A 10 Bar LED Bar Graph - you could just use 10 LED's for this, I found mine in a broken CD player
A Piezo-Electric Buzzer - I just desoldered this from an old Kitchen Timer with a broken chip in it, which was why I wanted to make myself an Arduino one in the first place!!
A resistor - to use any button with an Arduino a resistor is used; which gives a base voltage when the switch is open, and is bypassed when the switch is closed. I used a 10k resistor which I desoldered from a seed sowing machine.


An Arduino Shield - I have used this, since I like experimenting with my Arduino so don't want to have to keep building my kitchen timer whenever I need to use it.
A shield mounted breadboard - this just makes the whole thing a little neater.
More Resistors - for your components so as not to blow pins on your Arduino. Although I know that this is a good idea, I don't own enough resistors and don't know how to use the pull-up ones within the Arduino, so I have done without them for the moment. This is something to bear in mind, it's not my fault if you write off your Arduino!

Step 2: Build It!

Picture of Build It!

This is the important bit of the Kitchen Timer.
The easiest way to show you how to wire up this circuit is to use the annotated Fritzing Sketch above.
I will now explain the circuit, to those who care.
As you can see one side of the 10 LED Bar Graph is connected to the Gnd pin on the Arduino, while each leg on the other side is connected to a digital Arduino Pin. This means that when a Pin on the Arduino is set to HIGH, the corresponding LED Segment will light up. The Pins used to connect the Arduino are 3, 4, 5, 6, 7, 8, 10, 11, 12, and 13, as Pin 2 is reserved for the button, and PWM Pin 9 is reserved for using the piezo-electric buzzer. The switch is wired so that when it is closed the 5v connects to Pin 2 and through to the Gnd Pin. This means that when the switch is closed Pin 2 can be read as HIGH, and when the switch is open Pin 2 will be read as LOW. The Piezo Buzzer is connected to PWM Pin 9 so that we can simulate a square sine wave through it using analogWrite, which will create a beeping noise to alert the user that the timer has finished.
Thats pretty much it, but I recommend checking back here if you need to do any trouble shooting.

NB: I recommend connecting the ground of the Piezo buzzer to the same ground as that of the LED Bar Graph, so as not to have anything interfering with the resistor and switch system for adding time to the counter.

Step 3: Code It! (Or Use Mine)

Picture of Code It! (Or Use Mine)

To run the Kitchen Timer you will need to feed your Arduino some nice tasty code. I have written a rather simple (but scary looking) code that can drive it all, and for those who are happy enough making it work but not understanding it you can download it now. If I remember correctly Instructables does something weird with .PDE files so I have compressed this in the ZIP format, although you can also find the text on PasteBin and paste it directly into your Arduino editor if you feel so inclined.

Explaining it gets a little complicated, so I will give you a brief overview, and the rest is pretty self explanatory:
First we initialise all of the pins and features that we are going to use, to make sure that our Arduino is going to be working with them. We use the const int to indicate that the Pin that we have initialised is constant and will not change. Variables can also be initialised, but are generally not constant as they are set throughout the script. We then check to see if the button (connected to Pin 2) has been depressed or not, and if it is it lights up the next segment and adds one to out 'tastyTimeVariable'. This means that we can then use an 'if' function to state the length of the required timing depending on the value of our tastyTimeVariable. You will see that we delay for "300L * 1000L" which equates to about 5 mins, as 300,000 milliseconds = 300 seconds, and 300/60 = 5, so quite accurately 5 mins. We then tell the Arduino that if the tastyTimeVariable is equal to anything other than 0 (in other words the button was pressed, and something has been timed) to play a graphical display, and buzz the buzzer. We can vary the length of the alarm by changing the for command.

I hope this has made some sense, I have also written comments into the script to help those trying to understand how it works, and modify it for their needs.

I have had a couple of updates made by individuals to the code, and you can find links to these in the comments below, although I will not be posting them here as I am unable to verify the accuracy of their code as the links that they have posted are no longer active. I can confirm that, although large, the code I have written and posted works well and is easy to understand should you wish to review it, so I'm afraid that I will not be able to assist in your troubleshooting should you use a different code.

Step 4: Get Cooking!

Picture of Get Cooking!

Yes, I mean it. Just plug it into a USB wall adapter, and you are away with your nice Arduino Kitchen Timer. I wouldn't think that it would be very waterproof, so please dry your hands well before using it, and anything you do with it is your own responsibility, so please don't try and sue me. I hold © Copyright for this Instructable and it's contents, but I would love you to share this if you reference the link to this instructable when you do so. Thanks guys, I hope it works for you!! Feel free to ask me anything in the comments, i will try to help you with it but I am a bit new to electronics and Arduino, so please bear that in mind!!

*/ Usage Instructions

Reset the Arduino, and press the button as the LED segments light. Each segment represents 5 mins. When the correct number of segments are lit release the button. The display will flash and the segments will appear again. After 5 mins one will disappear, etc until the timer is complete. At which point a graphic will be displayed and an alarm will sound. To stop the alarm reset the Arduino. There is no need to have the Arduino turned off, as the Kitchen Timer is designed not to function without input.

Enjoy!! /*

Anonymouse197, Ari Cooper Davis ©, anonymouse197[at]


Dominion-Network (author)2011-07-01

This is a very practical and fun ible to do! I've just done this and it works like a charm!

I have noticed a problem tho, when I reboot the arduino or (Kitchuino ;)) at least 4 of the bar graphs turn on any ideas?

Haha, thanks! :) maybe you should double check the wiring, or the script I posted to instructables may be a little corrupt so you might just want to proof read it. I have made another from this instructable and it works well, so I'm not too sure what may be going on. I did notice that when powered with a 9v battery the LED bar graph was too power hungry, and ended up leaving the arduino without power after more than 4 had been lit up, maybe this is your problem?
I hope you can get it to work, if not just give me another comment and I will see what I can manage, I may re-upload the code and try publishing it to my arduino again!! :)

I'm not using any other power other than the USB from my PC, but something weird is happening, when I had it all wired up (Followed the ible to the letter) and I turned it on, without touching anything the bar graph started turning on itself and sometimes it'd either turn all the lights on, or up to 5 lights then start counting down.

Hmm... that does sound pretty complicated. For the counting problem try and turn the switch around. The switch used uses four pins to make two connections, so turning the device by 90 degrees and replacing it in the breadboard may solve the problem. I'm afraid that I'm still not able to access my computer, so I won't be able to check the code until the weekend, when I will try to get back to you. i might have made a mistake in the code, but until I am on my own computer I won't be able to access it so if we have any Arduino coders here I would be glad for the help!
Sorry that I can't be more useful, I hope you can get it working!

Ok, I have double checked the code on MediaFire and it is all fine, so that isn't your problem. Try the switch change that I suggested. Please could you send me [or post] an image of your setup so that I can help you troubleshoot? I am also going to post a video of the encoding and use of the Kitchen Timer in the next 30 mins if that is of any use. Thanks!!

CharlieC11 (author)2015-07-30

CharlieC11 (author)2015-07-30

CharlieC11 (author)2015-07-30

kilofeenix (author)2012-08-27

Instead of the bar graph can you put on a 14 or 7 segment display? there was another instructable with a display but no buzzer and im picky and want both!

anonymouse197 (author)kilofeenix2013-06-05

Sorry for the late reply. I have a 14 segment display so in the following weeks I will try and combine the two. :-)

rasyoung (author)2013-05-30

The various download links are broken, can you repost? esp. improved versions?

anonymouse197 (author)rasyoung2013-05-30

Yep, certainly, it would be a pleasure. I'm just sitting final exams at the moment, so I will start working on it again in 3 days and I should have it finished within five. In the meantime feel free to have a play with it before I get to look over it again, it would be a pleasure to include anything handy that you discover in the instructable!

mischka (author)2011-07-01

Nice arduino project. You should add a current limiting resistor between GND and the bar graph. See "Why do I need a resistor with an LED?"

anonymouse197 (author)mischka2011-07-01

I was aware of this, but I haven't got enough resistors and don't know how to use the pull-up ones built into the Arduino. I quote (myself):

"More Resistors - for your components so as not to blow pins on your Arduino. Although I know that this is a good idea, I don't own enough resistors and don't know how to use the pull-up ones within the Arduino, so I have done without them for the moment. This is something to bear in mind, it's not my fault if you write off your Arduino!"

I will learn how to use the pull-up ones, add it to my code, and recommend that people use them!
Thanks for the advice, and the link was very informative!!

Lord_Vek (author)anonymouse1972011-12-26

Nice Instructable. Anyonw know if this would work on an Arduino with ATMega 8;

anonymouse197 (author)Lord_Vek2011-12-27

Thank You.

Thats not really my area I'm afraid, I assume that it would be similar with maybe a little changing of pins. It's quite a large sketch for the 8 (but definitely not enormous).

Give it a go, and tell me how it goes!

arduino-mega (author)2011-11-27

I have had a go at rewriting the code for the kitchen timer as it was very long. The code i have written does the same thing but is just a fraction of the size of the original. Hope you don't mind. Here is a link to it

Thank you very much, that is absolutely fantastic! I will add it to the instructable if you don't mind, it works like a dream!

No Problems at all. Thanks for looking at it.

pkasavan (author)2011-11-03

Hi anonymouse197,

Thanks for your instructable. Unfortunately, I can't seem to download the Arduino sketch. It says Kitchen_Timer.pde on here, but when I download it, it is converted to .tmp with a garbage filename. Do you know of a way to convert back to .pde or do you have an alternate way which I could download the sketch? Mediafire is saying that the file is no longer available.


anonymouse197 (author)pkasavan2011-11-03

Your welcome :)

I thought that Instructables did something strange to .pde files! To change the file type just right click the file (it should look something like A94NDIWJD12NVLQ.tmp) and select rename. Then remove the .tmp from the end and add .pde. If you do this in one move rather than pressing enter in between you will be able to change the file type. Then just double click the file, and it will open in the Arduino application. It may also say that it requires the sketch to be in its own folder, but this is fine.

I hope this helps,

pkasavan (author)anonymouse1972011-11-03

Thanks for your response!

I tried your method for changing the file type, and unfortunately it didn't work. That method has worked in other instances, though, so I never know when it will work and when it won't.

What I ended up doing was opening the .tmp file in Microsoft Word. The formatting looked a little strange, but when I copied it into the Arduino app, everything was in order.

The sketch seems to work pretty well! My only complaint is that sometimes a light other than the first one will light up when setting the timer, leaving the first few off. This restricts the full amount of time which can be set, because it will only add time until the last light is lit. A simple reset fixes this, though.

Thanks again!

anonymouse197 (author)pkasavan2011-11-05

Thanks for your comment!

It seemed to work well when I tried, so goodness knows why that didn't work for you, but it doesn't seem to have been a problem. To try and work out what might be happening with the odd LED issue I converted the .tmp file to microsoft word, then copied it into arduino and had a similar issue!

To try and combat this I have re-uploaded the .pde file to a file hosting site so that you can download it straight away and try and get rid of your LED problem. So here is the file for downloading, and I hope you can get it to work effectively.


pkasavan (author)anonymouse1972011-11-05

Thanks for going to all that trouble!

The download worked fine, but I still found that the first light to go on was not always the first light in the display. I made some modifications to your code here, and they seem to work. Feel free to post the modified version on here if you like the changes I've made. Anything of yours that I changed, I simply commented out, and I also made comments explaining what I had done. Let me know if you have any questions about my changes.

Also, I changed the time increment to 3 seconds rather than 5 minutes for testing purposes. I hope this isn't too much of an inconvenience!

Thanks for giving me a good place to start with your code!

- pkasavan

anonymouse197 (author)pkasavan2011-11-05

Thanks for your response!

I'm glad the download worked for you, and thank you so much for posting your edit! I have run it myself and it works like a charm! If you don't mind I will replace the link on the instructable with the one you provided, as in my opinion it seems to be the better of the two.

I'm glad that this instructable has worked and turned out successful, and thank you so much for getting involved!

An absolute pleasure!

SurfKauai43 (author)2011-10-23

I'm a newbie to Arduino and have a breadboard. How would I build the circuit on a breadboard (e.g., where should I place the resistor)? Thanks much.

I'm only just starting out myself really, you will find me on forums all over the place trying to work out what was wrong with earlier versions of the code! :P

You should be able to follow the image on step 2 for guidance. On chrome the yellow selectable boxes are all in the wrong place, but apart from that it works well. For example, looking at that image I can tell that the resistor goes between the ground and one leg of the pushbutton, the other leg of which goes to pin 2.

If you don't have an Arduino you could always buy one, or make one if you are feeling adventurous, but I wouldn't know how to code the chip on its own.

Did any of that help?

Thanks for the response. I actually have the Arduino Starter Kit but I wasn't able to figure out to attach the protoshield, so I bought a breadboard to do the prototyping.

Ah ok, that makes sense.

I myself am only using a protoshield here for simplicity, the image in step 2 actually just shows a small breadboard mounted straight onto the top of an Arduino, so all the wires in the sketch are simply jumpers. To cut a long story short, you can just forget that there is a protoshield at all, and wire it up as shown in the picture, and it will all work anyway!

If, however, you have a breadboard that is slightly too large to put on top of the arduino, you could place the breadboard to the side and make all the connections slightly longer. This wouldn't be a very practical way to do it, as there would be wires all over the place, but it would still work. It is not a pretty solution, but I have attached an image of one way of building it with a larger breadboard.

This would make the timer almost impossible to actually use in the kitchen, with wires all over the place, but it would do for the time being until you could get hold of a protoshield. (If you are struggling to assemble the protoshield I will draw you attention to this document which contains detailed assembly instructions.)

So, I hope some of this has helped, and you have lots of jumper cables (or paper clips) to hand!

About This Instructable




Bio: Arduino, Literature, Music, and most of all The Outdoors!
More by anonymouse197:Treble Clef Key RingArduino Kitchen TimerBloody Finger Stump!
Add instructable to: