Over-Engineered Single Button Timer

Feature creep is typically something to be avoided, since watching a relatively simple project balloon into a rat’s nest of complexity often leads to ineffective, or even abandoned, projects. On the other hand, if you can maintain a tight focus, it’s not always a bad thing. [cbm80Amiga] shows us how to drill down and add specific features in this single-button timer without losing focus on what the original project was all about.

The timer is based on an Arduino Pro Mini and an HX1230 LCD with a simple piezo speaker for audible alerts. A single button controls operation of the timer, with short presses incrementing each digit and long presses moving on to the next digit. Controlling button presses this finely is a project in its own, but then [cbm80Amiga] moves on to other features such as backlight control, low power modes which allow it to operate for around two years on a single battery charge, preset times for various kitchen uses, and different appearance settings.

Honestly we aren’t sure how you could cram any more features on this timer without fundamentally altering the designed simplicity. It doesn’t fall into the abyss of feature creep while being packed with features, and it’s another example of how keeping things simple is often a recipe for success.

Thanks to [Hari] for the tip!

13 thoughts on “Over-Engineered Single Button Timer

    1. Knowing a bit about the Arduino environment, Pro Mini, and some mini-displays from first hand (successful) experience: Absolutely sub-second resolution can be achieved.

      Here are a few factors at play:
      1. Sub-second resolution is a subjective requirement and may not be a part of the designer’s criteria.

      I will reinforce this assertion with the observation that I personally have 5 store bought timers. Some for cooking others just generic count down times. None of them have sub-second resolution.

      Given the application – a timer you set, walk away, and respond when it goes off – how do you benefit from a sub-second resolution?

      2. Different displays have different latencies.

      Our cell phones seemingly have an instantaneous update but these tiny displays are not always all that fast.

      epaper has a refresh rate of 7.5 frames/second. or ~0.13s draw time. That redraw is very visible, and cannot reasonably display a sub-second resolution. (Yes, you can cheat only displaying 1/7.5 intervals.)

      3. SPI and I2C buses are not necessarily running at their peek speed.

      There are two factors here, the device being driven (display) may not support the fastest throughput, and the DEFAULT Arduino IDE values do not push the bounds of maximum speed for the sake of maximum compatibility. The buses can be pushed to maximum speed if you dig in a quite a bit.

      1. I think you missed the mark completely here?

        This is an LCD, not epaper, and even then what is being called for is for per SECOND updating, not subseconds.

        Have you watched the video??

        1. No I have not watched the video, but I’m going to chime in and support the very valid point Tom made: if you ‘set, walk away, respond when expired’, how does sub-second resolution help.

          If you can provide me a satisfactory excuse, I might be convinced to change my mind.

  1. How does this display compare with “Nokia 5110”?
    From the video it looks like the contrast is no much better and backlight is also uneven.
    Does contrast change much with temperature?

  2. I have a watch that alternates between incrementing and decrementing. after a short pause, it asks “ok?” and if clicked it moves to the next digit, else it returns to incrementing. It works surprisingly intuitively.

  3. It’s been a long time since I’ve used a dedicated microcontroller for such things, nowadays I just use an old smartphone, that you can get at the price of an Adrduino and a display, and that can do many more things.

    Somewhat sad and lazy, but convenient.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.