Motor Drivers Overview
In most projects involving embedded microcontrollers they must interface with the outside world through low power I/O pins. The maximum current a pin on the Arduino can source or sink (i.e. send current out or accept current in) is 40 milliamps at 5VDC. This will power an LED or other very low-power device, but not a motor, solenoid, valve, or light bulb. One could use power transistors or relays to power a simple electronic load. However a motor must often be driven both forward and backward, and at various speeds. While you could build up a circuit to do this using transistors it is usually more expedient to use a motor driver that can provide bi-directional operation, speed control, and which has a number of built-in protections from fault modes such as input power reversal, shorted outputs, over-temperature, and similar.