Vcc can power device, but digital out pins can't?

I am attempting to power a small laser pointer via the Arduino. I have stripped open the laser pointer and soldered on wires to positive and negative leads.

I then connect the ground to the ground of the Arduino. If I connect the positive of the laser pointer to the Vcc of the Arduino, it works fine. If I connect it to a pin and send a HIGH signal to that pin, it doesn't seem to be getting enough juice to light the laser pointer more than a little bit.

The voltages are about the same (around 5.03V). I indeed do have several other devices connected to other digital write pins. Is it possible that the Arduino is not shoving out enough amps to the laser pointer?

Replies are greatly appreciated.

Right, the output pins cannot provide that sort of current.

Look for examples of using a transistor over at Arduino Playground or using 'Search' here.

The output pins have an "absolute maximum" current rating of 40mA - you'll have exceeded this unfortunately - with luck its still working but you might want to check all the pins still function. In practice keeping the max current per pin down to 25mA is wise (there are other limits to total current through groups of pins).

Think of the pins carrying information, not power.

Yes that's correct as stated above. The laser is most likely current limiting the digital output pin. Your better off using a transistor driver to turn on the laser. Use your output to turn the transistor on at the base and use the transistor to drive the laser. Or you can use the transistor to trigger a relay and use the contacts of the relay to turn on the laser. Both will work, but depends on your application.

Powering laser diodes is a bit more tricky, see this:-

With integrated laser driver IC it is straight forward to driver laser diodes. Here you find many applications: or .

It's possible to connect a few output pins in parallel to increase the current capability. You then have to use direct port access to drive then all simultaneously, and be very careful to set them all to the same state. However, your laser pointer almost certainly needs more current than this technique can reasonably provide. So you should use a transistor, or (even better) a mosfet, to switch it.

You can use an npn transistor as a switcher for the 5v supply of arduino (if you just want to control it).