Activity Nudger

The concept:

The Activity Nudger light is a desktop companion that notifies a person working at their desk when they have been sitting for more than an hour, gently nudging them to get up for a few minutes. The device works with an on-off switch mechanism that controls the two states a person can be in. i.e Stationary Mode and Mobile Mode. While in Stationary Mode the device lights up white with a yellow ring and when in Mobile Mode, it glows ambiently in a greyscale color scheme slowly changing colors from black to white.

The design / Worksheet:


  • Display info that is important but not critical:

Activity nudge shows the user time information in a visual manner. It informs them that they’ve been working for at least an hour and are due a break. The info is not critical in that, if the user feels like they are not ready for a break yet, they can simply reset the Stationary mode by pressing the button to toggle the state. Ignoring the device, does not result in any critical side-effects.

  • Can move from the periphery to the focus of attention and back again.

When the device is in Stationary mode, it is in the periphery as no animations are happening, allowing the user to focus on their task at hand. When it switches into mobile mode, the ambient nudge, gently notifies the user and becomes the focus of attention. However, the user can with the click of a button, switch back to stationary mode thus shifting the device back to the periphery.

  • Focus on the tangible; representations in the environment

It is also a small, portable device that sits atop one’s desk and blends into the study/work environment non-intrusively. When it is off, it still blends into the desk environment as it looks like a small book.

  • Provide subtle changes to reflect updates in information ( should not be distracting)

The Activity Nudger stays white in stationary mode and when in mobile mode it lerps through a greyscale color scheme that it not distracting to the eye as it gradually changes going from white to greys to black with the yellow ring turning white as an additional indication of state.

  • Aesthetically pleasing and environmentally appropriate

The book theme fits into the office/study environment. Additionally, I would like the glass for the book to be frosted so that the ambient lights are even more muted and less distracting.

Low-fidelity Prototype:

Parts list:

  • Arduino Genuino Micro
  • 1 concave pushbutton
  • 1 single LED light
  • Jumper cables
  • Breadboard
  • 220 Ohms resistor
  • 10k Ohms resistor

screenshot-2019-02-14-004120Circuit diagram created on web app.


Arduino code:

The Arduino code for the device monitors signals from the push button and passes data to a Processing sketch over serial communication. Using an if condition, I toggle between the Stationary & Mobile state whenever the button is pressed.




Processing code:

The Processing code alerts a user to get active by creating an ambient nudge notification that tells them they have been stationary or working on something for at-least an hour. During testing, time was sped up to switch the state from stationary to nudge for mobile after a minute. When designing your own activity nudge use the time values you desire. I user 60 steps for 60 seconds a min and 60 min and hour, I user 1000 to represent 1 second. For an hour change this to 3,600,000  in the millis() check.

When msg is received over serial communication in serialEvent(), the string is split into an array and then depending on the state i.e 1 = = Stationary and 2 == Mobile, the isMobile boolean value is then set. This is what the draw loop determines to which animation to draw.

In my draw loop I use the millis function to run at set time intervals and change the background from black to grey in the Mobile state. In the Stationary state, the millis() check is used to figure out when to trigger the ambient nudge notification if a user has been in the Stationary state for atleast an hour or when testing atleast a minute.






When you need to run algorithms that happen over time – it is better and more efficient to use the millis() function. I had attempted to use a for loop and count down from a specific number to determine what color to make the ambient background, however this didn’t work because the loop still ran too fast and i couldn’t get the gradual change in colors and millis() gives a much cleaner solution.

Found a nice circuit diagram creation web app:


Github link to code: here

Performing an action every x-seconds : here