Hi Crusty -- you ask why the Arduino has gained such traction. I think it's a bunch of different factors. First, as you say, it's open source hardware and software, which has tempted a lot of folks to make their own boards and suchlike.
In the case of the IDE, they've removed a lot of the complexity and made it really easy for beginners to get started -- this is now aided by the plethora of books that are available.
And another big element is the trasure trove of resources available on the web. For example, when I bought a Real Time Clock (RTC) module from Adafruit, it came with an associated library and examples I coudl download and use -- so I was up-and-running in just a few minutes.
I think the Arduino platform somehow crossed the boundary from closed shop knowledge out into the open and may just have that intangible component of "cool". I know a kid (well he is in his 20s now) who decided he couldn't do the sciences. I did think he was smart and needed some motivation in the science direction, but it was not to be. He went to college for a degree in theatre production design. In that they learned the Arduino and he just twigged to it using it to control the lights etc. I now think that he would make a great embedded designer.
@Crusty: I think this is what I mean by did you start to look under the hood of the chip you bought on the board, or work out what the code does that it came with?
My problem is that I'm not a programmer -- so I can plod along but only to a certain level. When you get a piece of hardware like a Real Time Clock (RTC) shield for use with the Arduio, it comes with two things -- a library and some examples.
You include the library inyou rprogram using a "#include" statement -- thereafter you can make function calls like "RTC.GetTime()" -- these function calls call functions in the RTC library.
I can understand the example code, but a lot of the code in the libraries makes my eyes water (sad face)
Another benefit is that the community is guided towards simplicity, so you get easy to use libraries and support .
One of the best example of this is they encourage people not to use pointers(especially in library interfaces) , since pointers are really hard for beginners to grasp. They recommend instead to use references and even standard data structures, like std:vector etc which can fit embedded hardware using the uSTL library.
One response to the arduino was the mbed. It's not as simple as the arduino , but it's relatively simple, and is supported by a growing variety of microcontrollers.
And regarding simplicity and FPGA's: Multi core mcu's offer an interesting alternative to some fpga applications with a simper programming model. Another alternative is c-to-gates tools offered by altera and xilinx.
@alex_m1: Thanks for both the posts. It's good to know that someone is reading the blog and considers it worth a reply.
I hope that people will post ineresting things about how they got started and where they are going to.
I am looking forward to my LPLC - Low Power, Low Cost PIC18 Development Board by Mike Hibbett, that I get as a reward from backing this on Kickstarter. I should at last get an insight into using these chips and their diffrent architecture, as he is providing a beginners instruction class on how to use it.
The fact that this project past it's funding goals, by a lot, shows there is a need for other vehicles for micro experimentation.
Hmmm, there are various levels of compatibility. Remember the Arduino project adopting the Wiring language as its programming language; Wiring has been ported to a variety of other chips (including TI MSP430 and Tiva, with the Energia IDE, the Digilent chipKit (PIC32) which Max wrote about, the NavSpark (LEON SPARC processor), and the Intel Galileo (x86)).
Some of these use the Arduino IDE. However, low level Atmel code can't be ported (and some vendors like to use low level code).
Also, Arduino shield connectors are everywhere. For example, ST's Nucleo boards combine a STM32, mbed enviornment, and Arduino shield connectors, for <$11 (including the very powerful STM32F401 model).