Sorry to be cryptic. What I'm saying is that you can either obtain the discrete components, get your microcontroller (MC), design the firmware (i.e. code for the microcontroller including the USB communication), program it, debug it, and make sure your components work the way they should. Then, you will need to program the PC-side of it... Personally, I use MCs when the project is strictly embedded (i.e. it works w/out PC control or input). For sending digital signals directly from a PC to a device, I like the DLP or Phidget devices as the firmware is already on the "board" and the peripheral devices are available to rapidly interface to a PC. I have C# code blocks to perform serial communications (DLP) and am on the way to having classes that implement the Phidget APIs. So, if for instance you want to control a motor from your PC, you could buy a Phidget with the motor board(s), write several lines of code on your PC and be on your way (vice the first part of this message). Hey, I do this stuff as necessary to keep laboratory instruments running and to (ultimately) save time. Although I'd love to devote more time to it, quick and easy is the way I usually go!