You probably know this already from just reading some of the posts in my blog. Like millions of others, I am a big Arduino fan. So I thought I would share my side of the story and you can decide for yourself.
It Is Open Source
Arduino is open source both in terms of hardware and software. Since I am a big believer in open source, the open source nature of Arduino naturally fits my belief.
Being an open source project means you could do pretty much anything you want with it as you see fit. You can either use the official Arduino boards, or one of the many clones. If you are like me, you can use the Arduino bootloader and libraries in your customized circuits instead having to use an Arduino board for everything. Or, you can simply just use the Arduino library code in your AVR project without having to rely on the bootloader (e.g. programming via ICSP).
Besides being opensource itself, the toolchain (avr-gcc, avr libc, avrdude) upon which the Arduino environment is also open sourced. This means that all aspects of the Arduino software can be tailored to your needs if you choose to.
It Is Versatile
In my opinion, another big reason why Arduino has been so successful lies in its versatility. The Arduino platform, both hardware and software, dictates very few things (e.g. crystal frequency, but it can be changed if you modify the bootloader) and gives users the maximum flexibility to customize.
One big benefit of programming using Arduino is that the libraries and core functionality the Arduino framework provides are rather none-intrusive. You can use the libraries to significantly simplify most mundane programming tasks. While not as efficient as direct register manipulations, programming using these libraries is suitable for almost all applications. And if you like to, you can still use all the lower level functions provided in the AVR library directly.
I have heard some people complaining about the user friendliness of Arduino, complaining that the default IDE is too primitive. Guess what, since everything about Arduino is open source, you can easily switch to compiling your code using one of your most favorite IDEs. I had written a tutorial on developing Arduino projects using Netbeans and you can take a look if you are interested(1, 2). Some people had also complained about the inefficiencies in some of the built-in functions. But keep in mind that these built-in functions are geared towards the more general public. If you are seasoned in AVR programming, chances are that you will be able to come up with your own solutions. There is nothing preventing you from writing your own code in Arduino.
It is in general a rather tall order to design a product that satisfies both the hobbyists and the seasoned professionals, I think Arduino had succeeded in both.
It Is User Friendly
Not everyone using Arduino is an electrical engineer. The simplicity provided in the Arduino environment makes it useful for anyone who is interested in experimenting with hardware.
There are also many different “sheilds” available that can be plugged onto the Arduino board to provide different functionalities. I think this is a great way to get people who do not want to deal with their own hardware started in building something interesting. Plus, I am sure that there are many software guys out there who just wanted to write some useful code instead of monkeying with hardware.
It Has a Vibrant Community
Without the vibrant community, Arduino would certainly not be where it is today. If you are building you are building your projects using Arduino, I am sure that you have checked out the many Arduino related sites and forums.
With such a enthusiastic community, you can find answers to many of your questions. And if you run into technical hurdles, chances are that it had already been addressed by other people. And if it hasn’t been solved already, I am sure that some one out there would be more than happy to assist you with your problems.
There are also countless code libraries out there as well and these libraries are constantly refined by the community members.
Other thoughts
Besides Arduino, I also like similar effort such as the Pinguino project in the PIC community. For people who are in favor of PIC, it certainly worth checking out.