Microcontrollers for Beginners

One of the first questions that comes up is: Which microcontroller should you use? This page gives you an answer and the reasons behind it. Also included are some links to useful products for beginners.

Assumptions
You:
 * Do not have a lot of money.
 * Do not have a lot of electronics gear or experience.
 * Do not have a lot of programming experience.
 * Do want quick gratification.
 * Do not want to do really fancy stuff right off the bat.
 * Do not want to make a lot of decisions before you can get down to work.

Use the Arduino
Use the Arduino Because:


 * It is a development board and a development environment.
 * It is inexpensive.
 * There is a broad amount of activity on the web, and a lot aimed at non technical users.
 * Its software ( including a full development environment) is free, maintained, and open source.
 * There is a lot of library support for common tasks. Really Really a lot, more than I have seen for any other single uC environment.
 * You do not even need a programmer, comes with a serial bootloader.
 * There are a bunch of "Shields" available as add ons: Shields Stuff to stick on your arduino!
 * Connecting Arduino projects to a PC is easy using a programing environment on the PC that is similar to the one for the Arduino ( Processing ).
 * Making this one choice saves you from a bunch of other questions. If you choose a PIC you still have to decide: which PIC what board or circuit, crystal or resonator, which language, which compiler for the language, which hardware programmer?
 * This answer is a little bit of a cheat because it does not recommend a microcontroller, it it a development board and a development environment. But that is a powerful choice for a beginner, it does an end run around a bunch of possible problems.

Arduino Limitation and Why they Do Not Matter

 * Even with the Arduino there are choice of which one to get. But it is hard to make a really big mistake, and the info. on each choice is pretty available and easy to understand.
 * The development environment does not include a simulator. Lots of times simulators are not useful because of the dependence on external events and the limited and difficult use of "stimulus files".  Generally simulator are not really easy to use.  But it would be nice to have one.

( needs more work )

Not a Beginner
Use the Arduino. Within its own environment you are using C ( or C++ ) and you can do almost anything the chip can do. Only when you have special needs for chips with special characteristics do you need to move on. And the code is good high speed stuff ( I know not quite as fast as assembler ) And then you should still probably stick to C. C is thoroughly professional even if some times you have to use assembly to have real hair on your chest ( and is that really good? Not my favorite chests ).

Use Something Else
If the assumptions do not apply to you, or you have some special requirements then:

At least use a development Board
You are ready to go at almost the cost of components, you can get a kit or prebuilt. Some of these are:


 * USB Bitwacker
 * PIC Kit 2 or clone
 * Insert your favorite here.

Use a high level language
The best language may be C: this is written about the PIC but applies to other processors as well Use C for PIC Programming!

but almost any is better than assembler -- this is despite what the hard core says.

Down to the Metal
Lots of people like the PIC. I like the PIC. One of the great things about the PIC is that it is so popular. That means lots of code on the web, lots of programmers, languages.... There are also lots of different model PIC. That means you can buy just the right size PIC and not even pay 50 cents to much. And you can pay in the range of 50 cents for the chip. This can matter a lot when you are making a few thousand of your circuits. You can fine tune assembly language for the chip, design your own circuit board. But it is a not quick way to get results. If this approach interests you then consider the PIC. You can also buy the microcontroller on its own and work in a way similar to the PIC. And of course there are other families of microcontrollers. Move in this direction when and if you hit the limitations of the Arduino.

= Room for Opposing Views =

If you do not agree with the above, add your comments here or add a link to a new page to explain your opinion. Please do not re-edit my views ( but you may edit to strengthen the argument).

Other

 * EEVblog #45 – Arduino, PICAXE, and idiot assembler programmers I normally to not like videos, but this is worth the 20 minutes it takes.
 * Google "Microcontrollers for Beginners" many of the references will not agree with the above. I have looked at a lot of them and am not convinced, maybe you will be.
 * Arduino Links
 * Which uC (Microcontroller)? - discussion
 * Where to start with Microcontrollers
 * How to choose a MicroController
 * Arduino, the Basic Stamp killer
 * Arduino From Wikipedia, the free encyclopedia
 * "EasyPic4 First Impressions": Scott Sherrill-Mix says the "EasyPic4" at least appears to be the easiest way for beginners to start. It uses the PIC 16F877A.

Inexpensive Starter Kits
New to electronics, these kits have the Arduino plus other parts you may well want. Most of these kits seem to be priced close to, or even lower than the sum of the components.


 * Arduino Starter Kit about $60.
 * Arduino Starter Pack - 1.0 about $65. from AdaFruit
 * Arduino Budget Pack - Duemilanove w/328 about $50, reduced version from AdaFruit.
 * Review: Adafruit Arduino Starter Pack Review.
 * Arduino Starter Rundown Comparing the two Review of the two above.
 * Arduino Starter Rundown -part 2 5 more kits reviewed.
 * Arduino Starter Kit about $40.
 * Bare Bones Board Kit As basic as you can get about $16. Not the standard pin out, rs232 ttl, no cable, no nothing but the board. Pretty good if you have some idea on how to fill in the blanks.
 * Maker Shed: Search on Arduino From Make, a bunch of products.