In the Step Up! project, we wanted to encourage user engagement through a number of different means. One of our first ideas for doing this was through the use of lights. Previous research has demonstrated that ambient lights can be used to raise awareness in individuals about their health choices, such as between climbing the stairs or taking the elevator. In Step Up!, lights would be used to indicate to the user where they should step next, guiding them through the exercise and encouraging them to remain engaged with the system.
Our past experience with LEDs indicated that they would not be sufficient for our needs. While they might work well on a dark staircase, we needed a solution that would attract the user’s attention even in more well-lit environments. We decided to explore using BlinkMs as our solution. They are smart LEDs, so they offer a number of advantages over standard LEDs:
- They are significantly brighter
- They can be programmed to emit a specific color of light
- They are addressable
Being brighter than standard LEDs, BlinkMs can be detected in environments with higher levels of luminance. This is important to Step Up!, as it is assumed the system will be used on a lit staircase. Since BlinkMs can be programmed to emit a wide range of colors, they have the flexibility to allow us to use different colors to indicate the stair to step on. We chose to use 3 colors (blue, green, and red) for nine stairs, but we could use more, depending on if we want the user to step on a specific stair, or just a set of stairs. Since the BlinkMs are addressable, we were able to run them all off of a single ribbon cable, simplifying the hardware. Essentially all of the BlinkMs share an address bus, but we can program just specific ones using the addressing functionality.
Our specific process for getting the BlinkMs ready for Step Up! was to first give each one a unique address using the LinkM and BlinkMSequencer software. Once we had done that, we created code for the Arduino, using the BlinkM_funcs.h library, that would turn on the BlinkMs and tell specific ones which color they should be emitting. This was done using the BlinkM_setRGB() command.
We found that the BlinkMs very well suited our needs. We were able to program them individually without any problems, and we later successfully integrated that code in with code to turn them on or off when a beat was detected, but I will discuss that more in the next post.