As Webbot said, you can get a third digital I/O by removing the PC5 jumper. When the jumper is in place, PC5 controls the IR emitters for the sensors; when the jumper is removed, the IR emitters are just on all the time. PC5 can also be used as an analog input. You can get two more analog inputs by removing the ADC6 and ADC7 jumpers. The ADC6 jumper connects ADC6 to a voltage divider circuit that monitors the battery voltage, and the ADC7 jumper connects ADC7 to the user trimmer potentiometer on the underside of the board.
The two completely free digital I/O lines are PD0 and PD1, which happen to be the UART receive and transmit lines on the ATmega168. What this means is that you can program the 3pi's microcontroller to function as a "dumb base" that acts in response to received serial commands from another microcontroller (such as a Basic Stamp, Arduino, Orangutan, Axon, etc). This secondary microcontroller could connect to all of the extra sensors and electronics you want, and it would control the 3pi's motors, buzzer, and LCD through a serial interface with the base. To help make this possible, we will begin selling expansion decks for the 3pi in a few weeks. These expansion decks mount just above the wheels using four standoffs. They provide lots of prototyping space and will give you convenient access to key pads from the lower deck (e.g. the unused or optionally used microcontroller lines PD0, PD1, PC5, ADC6, and ADC7, all of the ISP programming lines, the battery charge port, the power button pads for installing a secondary power button, and LCD lines). We also plan on providing a program that will turn the 3pi into a serially controlled slave base, but we might not have that ready by the time we start selling the expansion decks.
- Ben