user8769: 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?

user10794: The 7-segment display board is all very well, but that displays 4 digits. That isn't exactly 5 LEDs. In any case that board has a chip on it, if you are going to buy another chip you may as well get an Attiny and use that. Just have serial input (same as the 7-segment board did).
On the Attiny you have 8 pins, 3 of which will be reserved: Vcc, Gnd, Reset. That leaves you with 5 for the communications and the 5 LEDs. So, use one pin for incoming serial, or two pins for SDA/SCL, and use the remaining 3 pins for the LEDs. You can can use Charliplexing to use 3 pins to light up to 6 LEDs.

For the fun of it, I made up an example using my Uno (it still only uses 3 pins to light 6 LEDs).

There are 3 x 100 Ω resistors as in the schematic. One is completely hidden by the LEDs (leading from the middle yellow wire to the middle pins of the LEDs).
Code:
const byte X1 = bit (2);   // D2 on Uno
const byte X2 = bit (3);   // D3 on Uno
const byte X3 = bit (4);   // D4 on Uno

const byte patterns [7] [2] = {
// PORT DDR
  { 0,   0, }, // all off
  { X1, X1 | X2 }, // LED1: X1 on,  X2 off, X3 HiZ
  { X2, X1 | X2 }, // LED2: X1 off, X2 on,  X3 HiZ
  { X2, X2 | X3 }, // LED3: X2 on,  X3 off, X1 HiZ
  { X3, X2 | X3 }, // LED4: X2 off, X3 on,  X1 HiZ
  { X1, X1 | X3 }, // LED5: X1 on,  X3 off, X2 HiZ
  { X3, X1 | X3 }, // LED6: X3 on,  X1 off, X2 HiZ
};

void setup ()
  {
  }  // end of setup

void loop ()
  {
  for (int i = 0; i < 7; i++)
    {
    DDRD = patterns [i] [1];
    PORTD = patterns [i] [0];
    delay (500);
    }  // end of for loop
  }  // end of loop

The code displays each of the 6 LEDs (plus all off) in a cycle. For each one it configures the DDR (data direction register) plus the PORT (output register) appropriately to light the desired LED.
It works perfectly, except that you may need to work out which LED is which by experimentation.

user2944: 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 & C1) there:

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

8769: <p>I'm working with <a href="https://punchthrough.com/bean/arduino-users-guide/" rel="nofollow noreferrer">lightblue bean</a>. 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. </p>

<p>The output, printed both to the SD card and to serial looks like this:</p>

<pre><code>12:38, 7/15/15, subway
12:55, 7/15/15, subway
12:38, 7/15/15, bus
12:55, 7/15/15, rail
</code></pre>

<p>etc. It's basically a time stamp then a vale from this list:</p>

<pre><code>char* modes[]= {"walking", "subway", "bus", "railroad", "other"};
</code></pre>

<p>This works perfectly. But the bean has very few pins:</p>

<p><img src="https://i.stack.imgur.com/aU3Q2.png" alt="enter image description here"></p>

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

<p>I have <strong><em>one</em></strong> 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.</p>

<p>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...</p>

<p>Ideas?</p>
 10794: <p>The 7-segment display board is all very well, but that displays 4 digits. That isn't exactly 5 LEDs. In any case that board has a chip on it, if you are going to buy another chip you may as well get an Attiny and use that. Just have serial input (same as the 7-segment board did).</p>

<p>On the Attiny you have 8 pins, 3 of which will be reserved: Vcc, Gnd, Reset. That leaves you with 5 for the communications <em>and</em> the 5 LEDs. So, use one pin for incoming serial, or two pins for SDA/SCL, and use the remaining 3 pins for the LEDs. You can can use <a href="https://en.wikipedia.org/wiki/Charlieplexing" rel="nofollow noreferrer">Charliplexing</a> to use 3 pins to light up to 6 LEDs.</p>

<h2><img src="https://i.stack.imgur.com/ZJfsk.png" alt="Charliplexing schematic"></h2>

<p>For the fun of it, I made up an example using my Uno (it still only uses 3 pins to light 6 LEDs).</p>

<p><img src="https://i.stack.imgur.com/SYzzc.jpg" alt="Charliplexing demo"></p>

<p>There are 3 x 100 Ω resistors as in the schematic. One is completely hidden by the LEDs (leading from the middle yellow wire to the middle pins of the LEDs).</p>

<p>Code:</p>

<pre><code>const byte X1 = bit (2);   // D2 on Uno
const byte X2 = bit (3);   // D3 on Uno
const byte X3 = bit (4);   // D4 on Uno

const byte patterns [7] [2] = {
// PORT DDR
  { 0,   0, }, // all off
  { X1, X1 | X2 }, // LED1: X1 on,  X2 off, X3 HiZ
  { X2, X1 | X2 }, // LED2: X1 off, X2 on,  X3 HiZ
  { X2, X2 | X3 }, // LED3: X2 on,  X3 off, X1 HiZ
  { X3, X2 | X3 }, // LED4: X2 off, X3 on,  X1 HiZ
  { X1, X1 | X3 }, // LED5: X1 on,  X3 off, X2 HiZ
  { X3, X1 | X3 }, // LED6: X3 on,  X1 off, X2 HiZ
};

void setup ()
  {
  }  // end of setup

void loop ()
  {
  for (int i = 0; i &lt; 7; i++)
    {
    DDRD = patterns [i] [1];
    PORTD = patterns [i] [0];
    delay (500);
    }  // end of for loop
  }  // end of loop
</code></pre>

<p>The code displays each of the 6 LEDs (plus all off) in a cycle. For each one it configures the DDR (data direction register) plus the PORT (output register) appropriately to light the desired LED.</p>

<p>It works perfectly, except that you may need to work out which LED is which by experimentation.</p>
 2944: <p>Seems you have I²C on the board you could possibly use an I²C LCD backpack, like from <a href="http://www.adafruit.com/products/292" rel="nofollow noreferrer">breakouts</a> if you already have an LCD, this means you can have the RTC and display on the I²C bus and probably more things.</p>

<p>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 <a href="http://playground.arduino.cc/Code/I2CPortExpander8574" rel="nofollow noreferrer">Arduino libraries</a>. There are <a href="https://www.sparkfun.com/products/8130" rel="nofollow noreferrer">breakouts</a> for it. Or you could make your own from another AVR, like one from the ATTiny line, seems there is 5 LEDs.</p>

<p>A I²C bus example:
<a href="https://i.stack.imgur.com/mkTCK.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/mkTCK.jpg" alt="enter image description here"></a><br>
<sub>(source: <a href="http://www.ermicro.com/blog/wp-content/uploads/2009/02/i2c_00.jpg" rel="nofollow noreferrer">ermicro.com</a>)</sub>  </p>

<p>Seems you want to use the PWM, you can use a dot/bar driver IC, such as the <a href="http://www.ti.com/lit/ds/symlink/lm3914.pdf" rel="nofollow noreferrer">LM3914</a> it takes an analog value and shows it as a point on the strip of LEDs, example below:
<img src="https://i.stack.imgur.com/wKf0v.jpg" alt="enter image description here"></p>

<p>The IC can also work down to 3V. </p>

<p>What you will need to do is add a <a href="https://en.wikipedia.org/wiki/Low-pass_filter" rel="nofollow noreferrer">low pass filter</a> to convert the PWM to a smooth analog value. You will add this in place of the input circuitry(D1 &amp; C1) there:</p>

<p><img src="https://i.stack.imgur.com/K3iut.gif" alt="enter image description here"></p>

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