When designing this custom MP3 player for his grandson, [Luc Brun] ran into a unique problem. He wanted the boy to be able to operate the player on his own, but being only 2½ years old, the user interface would have to be exceedingly straightforward. Too many buttons would just be a distraction, and a display with text would be meaningless at his age.
In the end, [Luc] came up with a very interesting way of navigating through directories full of MP3 files using a few push buttons and a ring of WS2812 LEDs. The color of the LEDs indicate which directory or category is currently being selected: spoken nursery rhymes are red, music is orange, nature sounds are yellow, and so on. The number of LEDs lit indicate which file is selected, so in other words, three orange LEDs will indicate the third music track.
At his grandson’s age, we imagine at least a little bit of him navigating through this system is just luck. But as he gets older, he’ll start to form more solid connections between what he’s hearing and the color and number of the LEDs. So not only is this interface a way to help him operate the device himself, but it may serve as a valuable learning tool in these formative years.
On the other hand, if your goal is just to distract a youngster for as long as possible, an overwhelming number of LEDs, buttons, and switches might be exactly what you want.
Sometimes less is more. This is especially true when dealing with microcontrollers with limited I/O pins. Even if you have lots of I/O, sometimes you are need to pack a lot into a little space. [Hugatry] was inspired by the simple interface found on a lot of flashlights: one button. Push it and it turns on. Push it again, and it switches modes. You cycle through the modes until you finally turn it back off. One button provides mutliple functions. The question is how can you use a power switch as an I/O device? After all, when you turn the power off, the microprocessor stops operating, right?
[Hugatry’s] answer is quite simple. He connects a resistor/capacitor network to an I/O pin (or multiple pins). When the processor turns on initially, the pin will read low and the capacitor will charge up. If you turn the power off, the CPU voltage will fall rapidly to zero, but the voltage on the capacitor will discharge slower. If you wait long enough and turn the power on, there’s no difference from that first power on event. But if you turn the power on quickly, the capacitor voltage will still be high enough to read as a logic one.
What that means is that the processor as part of its start up can detect that it was recently turned off and take some action. If it remembers the previous state in nonvolatile memory, you can have the code cycle through multiple states, just like a flashlight. You can see a video of the setup, below.
Continue reading “Only One Button? No Problem!”