I've also found that capacitive screens are hard to come by if you're not an OEM. This 2009 article states "With prices of projective capacitive touch panels at about $2.50-3.00 per inch, the average cost for a touch panel module will be about $30 for a mainstream-size netbook". That, of course, is the price for Asus to buy 100,000 of them, not for you and me to tinker.
Fortunately, there are a lot of OEMs who produce products with capacitive screens, and there is a significant market for replacement screens. I'd recommend that you find a screen (Both LCD and touch panel) which meets your needs on an existing product (whether it's a touchscreen PC, netbook, or PDA) and then try to find a replacement screen for it. While you're looking, take a look at this comparison of the Nexus One, Droid Eris, Motorola Droid, and iPhone touchscreens, to help you decide what to get. Also look for hardware hacking forums for more help, as the datasheets will be hard to come by.
For an example screen, Sparkfun sells the replacement iPhone touchscreen and display for $140 - Not bad for the display, but a lot if you just want the sensor. Directfix (and many others) sell just the digitizer for about $30, some sell the digitizer, glass, and home button for about $50 - you'll have to look around. (Look here - iPAD touchscreen! So long, joystick buttons; hello, 10" glass touchscreen.)
Calamari over at Sparkfun said (Concerning the iPhone replacement touchscreen):
As you can see in the photos, there
are two B2B connectors. On one is for
the video. It has a 1v8 SPI bus to
configure the controller and a MPL
interface for the pixels. You can
drive the latter with a LM2506 and
that's fairly straightforward to
implement although the part is a
leadless LLP in its largest
incarnation. That interface gives you
18bit color.
The second B2B connector is to the
touch screen controller. Also 1v8 SPI.
During initialization, the touchscreen
and host exchange packets of about 80K
bytes which tends to rule out using a
smaller microcontroller.
During a touch, the touchscreen will
generate an interrupt every 16ms.The
host reads 8 bytes which include the
length of the payload packet. The
payload is 55 bytes for one finger, 83
for two, etc, and has a simple
checksum. On the iPhone, the host runs
it at a bit clock of 12 Mhz, but I
imagine slower would be fine.
As others have said, capacitive touchscreens, while nice, are much harder to work
with than resistive ones. Budget some space on your micro (ARM9 or better, probably - Can you handle 1024x768 data at 100Hz?) and PCB accordingly; don't expect to build an iPhone with your Arduino.
I haven't actually done this, but it seems the problem is the objects you are using are too small and don't have enough ambient capacitance. A human touching something adds capacitive coupling to the environment. Think of the size and surface area difference between a carrot and a carrot+human.
You should be able to use something conductive that is covered by a thin insulating layer, then connect the conducive part to a conductive plate under the iPhone or to ground. In this case "conductive" only needs to be not a good insulator. As you found, even something like a carrot is conductive enough. Try connecting a ground clip to the other end of the carrot, or connect it to the chassis of your machine.
Best Answer
My phone (SE Xperia X10) goes nuts if there's water on the screen. Even a sweaty finger can make it mis-register touches. If it's a worry I'd suggest a resistive touchscreen.