"But if you are talking about software developers creating applications at a higher level, then a lot of them don’t have a clue about the “nitty gritty” details of programming a microcontroller at the lowest levels and interfacing with real-world input and output devices"
Very sad, but true. While the high level tools available today have the ability to leverage productivity, the isolation from the "iron" (silicon) is creating a huge work force that rarely even bothers to ask, "but does this approach execute efficiently"!
I have always maintained that any programmer worth his salary should be able to describe the assembly language instructions an optimizing compiler will generate for a given block of code. That doesn't mean he has to understand all the details or be able to write it himself but if he has never done cc -a -t he is clueless to what he is really doing
The SparkFun folks are great. They have a very high level of customer service and a refreshing attitude.
I recently jumped into the Arduino world myself with the same concerns about it's capabilities. My conclusion is that it depends on what you want to use it for. I've found good use in learning how to use new sensors, like my GPS or IMU.
The Arduino has libraries for a huge number of peripherals and getting something like my GPS up and running is very quick. I can get familiar with the ins and outs of the sensor before putting a large investment in software for a lower level MCU.
I'd also put the mbed in this same camp. The mbed is more capable than the Arduino, and not that far off in cost now. The mbed also has quite a few libraries available.
Enjoy your articles. If you're interested in additional resources, I have a book published by Apress on building cool projects with the Arduino titled, Learn Electronics with Arduino. The book doesn't teach basic theory of electronics but the concepts such as Physical Computing, Mechatronics, and little Systems Engineering philosophy using the microcontroller platform as a hands-on teaching tool. Basic electromechanical and electronic components like transistors (BJT and MOSFETs), flyback diodes, relays, 7 segment LED displays, LCDs, and servo motors are discussed in the book. Each chapter has a wealth of projects along with Arudino sketches to explore the cool electronics prototyping platform. Here's an Amazon link to the book. http://www.amazon.com/Learn-Electronics-Arduino-Technology-Action/dp/1430242663/ref=sr_1_1?ie=UTF8&qid=1360357486&sr=8-1&keywords=Learn+Electronics+with+Arduino
I agree and disagree. I agree that many developers working with high level languages don't understand the low level details. Abstraction of the low level details is the entire point of a high level language. Languages like C have come a long way in their optimization. If the compiler is not generating efficient code, then I would say that the deficiency lies in the compiler and/or hardware rather than the developer. That is not to say that the compiler or hardware are sub par, only that the industry itself is still quite young. I would rather see developers focus on sensors, transducers, and interfacing with the physical world, while relying on the microcontroller (and associated compilers) to Just Work (TM).
NASA's Orion Flight Software Production Systems Manager Darrel G. Raines joins Planet Analog Editor Steve Taranovich and Embedded.com Editor Max Maxfield to talk about embedded flight software used in Orion Spacecraft, part of NASA's Mars mission. Live radio show and live chat. Get your questions ready.
Brought to you by