A microcontroller has all the essential parts of a computer but is focused on running a single controlling program rather than being able to run different programs depending on how it is used. That program may be very complex, but is very specific and infrequently updated. An Arduino is a popular micro controller although the MicroChip PIC controllers are used pretty much everywhere you can find electronics. A microcontroller is self-contained. A microprocessor is not.