Timer

I know how to build an astable multivibrator. But how would one build (w/ out 555 or other timer) a timer that stayed on for x seconds.
i.e. I press button, LED turns on and stays on for, say, 5 seconds. Then turns off.
What is that called and how could I build it?
(I'd google it if I knew what it was called)

But by using a cap, wouldn't the LED brightness change?

And on a side note, what is the difference between a mux and a shift register? Which one is better for increasing inputs on an arduino?

You need to look up "one-shot" also, will change output state for specified time, buffer it with another logic gate to drive the LED if you need more current drive.

MUX is like a digitally controlled switch, say you had 3-line to 8-line data selecter/or, you control three lines, 1 of 8 outputs follows the input line.

Shift register on the other hand, the bits over along from register to register.
If a serial-in/parallel out shift register, the bits are shifted in one at a time (say from an arduino using a data line and a clock line), then shifted and presented as a parallel output.

If a parallel-load/serial-out shift register, the bits are all loaded at one time, then shifted out one by one (say to an arduino).

You say you want to increase inputs? That really depends on how you want to acquire the inputs.
If you want to capture the state of a particular input RIGHT NOW, or bring in a bunch of data from one place, then muxing is the way to go - its like opening a channel to one spot from a bunch of spots.
A part like this
http://focus.ti.com/lit/ds/symlink/sn74151a.pdf
lets you read continously from 1 of 16 locations - set the 4 select lines, the channel is opened.
Or use with a 74154 to make it even wider - the 154 lets you enable of 16 151's, so now 4 bits lets you select from 1 of 16 parts, and then another 4 bits lets you select from one of the 16 inputs on that part.
Even better, use a shift out to write those 8 bits, now you have 256 inputs at your beck & call with just a few arduino output pins tied up.

There are analog versions also if you're looking for analog data, parts like DG406.
http://www.intersil.com/data/fn/fn3116.pdf

If you want to capture the state of a bunch of stuff all at once, then the parallel load-serial out shift register is probably better - one load-clock to capture it, then shift it in, chain up as many as you need.
I'd have to look around more to find something like multiple input A/D chips with built in sample & hold to capture the state of multiple analog signals all at once.

With some of the Arduino clones being so inexpensive, unless you want lots and lots and lots of inputs... why not just use multiple Arduinos? If you need to integrate the data, you could have several Arduinos collecting the data, and then passing it to a central "master" processor, Arduino or higher.

Inexpensive clones? See ModernDevice RBBB...

http://shop.moderndevice.com/products/rbbb-kit

Ok. What I need is as follows:
I recently acquired a PS/2 keyboard in hopes of using w/ the PS2 keyboard library. It didn't, though. (I think the circuit was shot) But upon opening it, I found 3 layers- 2 conductive and a non-conductive.
Like this:
-----conductive layer---------> to board (8 wires)
-----non conductive layer w/ holes-------
-----conductive layer---------> to board (18 wires)

It's very complicated, please don't ask me about it.
The long and short, though, is that I had 26 inputs I needed to read...
So would you recommend a few multiplexers or a shift register?

I'll explain how it worked later.

That's a tough, either way could work.
Do a search for very recent posts on someone wanting to get an interrupt from 27 reed switches.
You could do the same - 26 diode Wired AND to create the interrupt, I would think a single load clock to store the state of the switches might work quicker, more reliably to catch a key stroke vs doing 26 individual reads (letters only, no numbers?). Might have to scan in a couple of times looking for the 0 bit that caused the interrupt depending on how much bounce there is.
On the other hand, I recently saw with an oscilloscope that 6 shiftout commands only required 0.8mS. So maybe you could modify the keypad.h library to scan 26 keys from two 16-input multiplxers to read them quickly as well. I envision a 5 bit counter, outputs go the address inputs on the mux. Start with b00000, digital read from mux1 address0, if ==1 then clock the counter, digital read from mux1 address1, etc working up to address b10000 being mux2 address0, b10001 mux2 address1, etc. until you find a 0.
32 writes & reads, bet that is quick too.
Or with the shift register, clock the load-line, shift in 4 bytes, if all == FF then do it again until not equal FF is found.

I'll get the mux. It'll be easier to change inputs. Thanks everyone.
Happy 2011!