It`s my first post, hello everyone!
I have a question regarding connecting a 100mA led directly to one of Arduino`s I/O ports.
What will happen?
a) the led will just become 40mA, which is max for Arduinos I/O.
b) the led will become much more current, but the Arduino will eventually get damaged
you'll drive it higher then 40mA but probably not the full 100 and eventually burn out that IO or possibly your Arduino. Either use a constant current driver chip (TLC5941) or circuit or a NPN transistor and current limiting resistor. Constant current is better for high-current LEDs (100mA is kind of in-between) because these LEDs voltage/current graph can change due to lot differences and aging.
I'm an LED junkie.. I'm currently building lighting systems which draw upwards of 7A@12v on a single circuit.
You want a nice capable switching transistor. Personally, I was always a big fan of TIP120, it's an NPN Darlington pair that can handle quite a bit of current. Since it's a Darlington, it draws next to nothing from the IO port... however, recently, I've fallen in love with N-Channel MOSFETs. These can switch HUGE loads extremely fast with almost no loss or heat. What you want to do is look for the words "logic level MOSFET", these have a gate voltage that will turn (almost completely) "on" with 5v at the gate terminal rather than the 10v required for others. If you use "standard" MOSFET, you will want to have a bipolar transistor like 2n2222 switch 12v or so to the gate.