These are great for doing a little heavy lifting with a microcontroller. Most micros can only source or sink about 20mA of current with each pin. If you’re trying to do something like drive a high-power multi-segment LED display, the current from a microcontroller pin just won’t cut it. You could run the micro outputs in parallel for more current, but then you lose pins for other purposes. Using an external array for the switching lets each pin drive a unique load at higher current, with the added benefit of offloading some of the heat from the microcontroller.
The ULN2003/4 and ULN2803/4 are 7- and 8-element Darlington arrays which can switch up to 500mA (MAX!) per channel at up to 50 volts. Channels can be combined to switch higher current loads (still 50V though). Take note of that “500mA MAX”: while the 2×03’s can switch that much current, they can’t do it forever, because they can’t dissipate the heat. The total amount of switchable current will depend on the number of channels you’re driving at the same time, and the duty cycle of the input signal. See the datasheet (PDF) for more information.
The 2xx3 chips have 2.7k input resistors, so they can be driven from a 5V TTL/CMOS line — if you’re using an Arduino, you should get the ULN2003/2803. The 2xx4 chips have 10.5k resistors for inputs of 6-15 volts.
These are great for driving multiple RGB lines with lots of LEDs, or a bank of relays or motors (they have clamp diodes built in!). The following illustrates how to properly connect the ULN for driving an inductive load like a DC motor.
Purchasing note: these chips were originally (and still are) made by TI. The TI chips are great, but recently I noticed Mouser has begun carrying the Toshiba versions for about 30% less cost. I’ve used both, and they perform equally well.
Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.