One free pin. Need to display output for the user? I'm working with lightblue bean. I have a device that writes data to an SD card on a long button press and switches what will be written (from a list of 5 items) on short button press. 

The output, printed both to the SD card and to serial looks like this:

12:38, 7/15/15, subway
12:55, 7/15/15, subway
12:38, 7/15/15, bus
12:55, 7/15/15, rail


etc. It's basically a time stamp then a vale from this list:

char* modes[]= {"walking", "subway", "bus", "railroad", "other"};


This works perfectly. But the bean has very few pins:




5 SCK  -- connected to SD card. 
4 MISO -- connected to SD card. 
3 MOSI -- connected to SD card. 
2 SS   -- connected to SD card. 
1      -- input button, takes long and short presses 
0      --  
A1 SDA --- connected to real time clock for timestamp 
A0 SCL --- connected to RTC (real time clock) for timestamp


I have one free DIGITAL pin. I need to let the user know what they have selected. This could be done with 5 LEDs that light up next to the user's choice, or maybe displayed text? This is a portable item so a servo that points to the user's choice might be too unreliable.

I've done some research into shift registers. They all seem to need 3 digital pins min. If I could do it with 2 I could rework the button...

Ideas?
Seems you have I²C on the board you could possibly use an I²C LCD backpack, like from breakouts if you already have an LCD, this means you can have the RTC and display on the I²C bus and probably more things.

Another option seems you mentioned LEDs, you could still use the I²C bus and use an I/O expander and hook LEDs up to that and address them over the I²C. You can use a PCF8575(16 I/O), as there are Arduino libraries. There are breakouts for it. Or you could make your own from another AVR, like one from the ATTiny line, seems there is 5 LEDs.

A I²C bus example:

(source: ermicro.com)  

Seems you want to use the PWM, you can use a dot/bar driver IC, such as the LM3914 it takes an analog value and shows it as a point on the strip of LEDs, example below:


The IC can also work down to 3V. 

What you will need to do is add a low pass filter to convert the PWM to a smooth analog value. You will add this in place of the input circuitry(D1 &amp; C1) there:



If there is any confusion on the LM3914, there are quite a few tutorials on google.