So lets say I want to power an LED from an external source and use a digital output pin to turn it on.
Vcc -> +LED- -> Digital Out.
When digital out goes low, will it sink the current allowing the LED to turn on?
When it goes high, there will be +5 to both terminals on the LED, but as long as theres no potential, nothing should happen and for all intents and purposes, this is hypothetical and kind of irrelevant to my question. Im just wondering if the digital output will sink current when low.
Yes, the ATmega chips all have strong push-pull output drive with an absolute maximum
of 40mA in either direction. Its common sense to run them somewhat less than
that for a reliable circuit, say 25mA, which is good for most LEDs anyhow.
You can pretty much rely on any CMOS microcontroller to have capable outputs like this
as CMOS is inherently symmetrical and decent output current is a selling point.
The critical part about using the Arduino to sink current from an external source is that the voltage of the external source should not be significantly higher than the Arduino Vcc. So if your external source is 5V, that is OK (you could even get away with a bit more, because the LEDs won't conduct appreciably until they have enough forward voltage). However, if you power up the external power supply and you don't power up the Arduino, then power will flow from the external source, through the LEDs and series resistors, then into the output pins and through the pin protection diodes to Arduino Vcc. The pin protection diodes are not intended to take more than a couple of mA. Therefore, you must power up the Arduino before you power up your external supply, and power down your external supply before you power down the Arduino. Otherwise, you may damage the Arduino.
If that is too difficult, then I suggest you use TPIC6B595 shift registers to sink the LED current instead. These have open-drain outputs, so they don't care about the order in which the power supplies are sequenced.
There should be a resistor in series with the LED to limit current.
Thank you for the replies!