There is a common misconception in the electronics industry that Arduino is unsuited for professional development. As a result many companies try to use different, far more complex tool chains to develop software with far fewer ready made libraries available.
In some cases, as unbelievable as it sounds, I’ve heard of consultants suggesting that the code is written in assembler, when the code is not even that time critical. That comes with staggering costs.
Personally, I’m shocked by some of the things I’ve heard and would like to tackle a few misconceptions right here:
True and False at the same time, Arduino is nothing more than a series of libraries and standard practices sat on the top of the standard AVR tool chain. You can do anything within the Arduino framework that you can do with the AVR tool chain, as it’s built on the top of it.
This includes accessing any hardware directly or a few lines of assembler, should it be needed for performance. There are now several libraries for Arduino that access pins almost as fast as going direct, keeping the code much cleaner than directly access port registers.
Again, repeating what I said in the last paragraph, Arduino is nothing more than a set of libraries. AVR chips are very cheap and easily programmed over ISP. Carefully written Arduino code can run on an ATTINY chip; with this chip having an inbuit oscillator, the minimum extra components would be bypass capacitors and a 6 pin programming header. If the budget is a bit bigger then the ATMEGA328 provides far more capabilities at a still low price point. Here’s a few examples from Jan 2018:
|Package||Chip||Per 100*||Per 1000*|
* as of Jan 2018 - indicative only.
For low volume, there are many cheap professional boards that are small form factor; which when purchased in bulk become another cost effective option for some projects Especially if the micro-controller was a late addition to the project.
The basic IDE is great for beginners writing their first sketch, but unsuited to hardcore C++ dev. However, you don’t need to use it, there are now several very good alternatives. A few that stand out:
Wrong: Although out of the box the loop method of programming keeps power usage high, it’s actually very easy to make Arduino programs event based, in fact I’ve got code that does exactly that, and makes it very easy to reduce power consumption significantly. For example AVR chips can be set to a low power state until a timer or interrupt occurs. This won’t solve all cases, but will meet the 90% / 10% rule where it fits most cases.
If you see through the above issues, the platform provides a lot of plus points, there’s an unparalleled number of libraries available that work with many peripherals out of the box. Want to use a 20x4 parallel LCD display, sure just use LiquidCrystal, want a shift register, sure support is built right in, want i2c or serial, helper classes readily available.
If you are considering developing an 8bit or 32bit embedded device on commodity hardware, think carefully before stepping over the Arduino platform. Just look at desktop programming 20 years ago where C programmers mocked newer alternatives, just for them to take the lions share of the market a few years later. People literally saved 10s to 100s of man years on moderately sized projects.
Contact us and talk to us about our experience with Arduino. You may well significantly reduce your time to market!