Arduino Mini Pro not delivering rated current to LED

I have an LED rated for 3.3V operation connected directly to pin 14. The code I used is:

pinMode( 14, OUTPUT ) ;
digitalWrite( 14, HIGH ) ; // turn On LED

The LED didn't seem to achieve full brightness, so I measured the power, and found 2.85V and 13 mA. I connected the lead of the LED directly to the 3.3V regulated power output from the Arduino board, and observed that it was quite a bit brighter and now pulling 33 mA at 3.26 V.

My question is this: since the pins on these board are rated at 40 mA, why wasn't pin 14 delivering the 33 mA that I need for this lamp?

(Note: I was only running one other pin at the time, so the overall max of 200 mA wasn't reached)

If you look at Table 30-1 in the Oct 2014 328P datasheet, you will see that Voh has a minimum high of ~0.8 less than Vcc, so with Vcc = 3.3, a high out under heavy load (up to 20mA) could be as low as 2.5V. So 2.85V at 13mA is within spec.
Above 20mA, the output voltage can be expected to drop below 2.5V.

I think you really need to explain what "an LED rated for 3.3V operation" is.

What current limiting arrangement does it have? I hope you do not intend to assert it does not need one.

We must presume you are in fact using a 3.3 V Pro Mini.

And pins are not "rated" for 40 mA - that is the limit you need to avoid.

First, to reply to CrossRoads' comment regarding voltage: the reason why I am powering this lamp from a pin is to be able to turn it on and off. It occurred to me after writing my post that my VOM might not be reporting the peak voltage during the 'on' period. I changed the code to simply turn the lamp on once, and not turn it off. The reading I got under this situation was about 3.2 V, and quite acceptable. The current was still low, at 14.5 mA.

With regard to the current to the lamp in Paul__B's post... the lamp in question is an NTE30038 "Super Bright LED Indicator (Pure Green, GaInN/GaN)". The data sheet (see shows a typical Vf of 3.3 V for an If of 20 mA. Therefore, I expected that, when powered at 3.3 V from a pin capable of 40 mA, I would see 20 mA at 3.3 V. I did not (only 13 mA was measured), which is why I made the original posting. If I am not receiving even half of the current that the Arduino is rated to provide, the benefit of a current limiting measure eludes me.

I apologize for not being specific about the board in question. You are correct: it is, in fact, a 3.3 V Arduino Pro Mini.

Yes, I understand that the 40 mA rating is for the maximum allowable power, and should be avoided. I expect to operate safely at half of this amount. I just don't understand why 20 mA is not being delivered.

Your understanding is flawed (typ. n00b not like resistor).
Most all of the output voltage is across your device with a tiny remnant across the internal resistance, which is basically determining the current.

OK, we get back to the matter - frequently discussed here - of what a LED is.

You should perhaps research it more thoroughly, but in essence a LED is a diode with a threshold before which it will not conduct at all and at which it will readily conduct large currents with minimal increase in voltage above that threshold, thus having a very low effective dynamic (series) resistance.

Your situation therefore is that the threshold voltage of the LED is very close to the voltage available from your regulator. This is a completely impractical way to drive a LED as depending on circumstances including the particular parameters of that LED and the voltage regulator, and the temperature, the LED might variously draw very little current as you describe, or possibly a heavy current.

In general, you need to control the current by allowing something of the order of a volt across the dropping resistor, so for operating 20 mA LEDs, you want 4.5 or 5 V. In your case, you have successfully used the internal 40 Ohm (at 3.3 V) dynamic resistance of the ATmega for current limiting, but this situation is extremely sensitive to the supply voltage and could easily exceed the rating of the ATmega with a relatively small increase in supply voltage.

That said, it is somewhat fortunate that the ATmega has a positive temperature coefficient - as it heats up, its ESR increases and limits the current more.

And finally, 13 mA is plenty to operate a LED; doubling the current would produce a noticeable, but not stunning increase in brightness.