Having spent the past 6 years writing code for the Arduino platform, I’ve noticed a trend in myths from both new-comers and veteran users. Here are the Top 5 Myths I see come up on forums, in classes, and on IRC.
1. The Arduino uses its own Language
This myth isn’t helped by the Arduino.cc home page which says “The microcontroller on the board is programmed using the Arduino programming language.” While it is true that the structure of an Arduino sketch looks unique, it is really just C++ with a tiny bit of preprocessing. Users writing “Arduino Code” are actually writing C++ with, what I call, the Arduino Library. Functions like digitalWrite() are just that, C++ functions.
So while the Arduino Library does a great job of making microcontroller programming very simple, it is not its own language.
2. Pin 13 Has a Resistor
Countless tutorials have lulled newbies into this trap. The very first Arduino board, of which something like 200 were produced, had a LED and series resistor on Pin 13. That’s the only board which did. So you should never never never connect a LED to Pin 13, without a resistor!
3. Commercial products don’t use Arduino
Corollary: “real” engineers don’t use Arduino!
Okay. I try not to toot this horn, but I’m a “real engineer.” You already know that: it’s in my twitter name and URL. Here’s a top secret piece of information: I use Arduino. Now it is true. You aren’t going to go to Best Buy or your local big-box electronics store and find many (if any) products that have an “Arduino Inside” sticker. However, Arduino is a prototyping platform. You aren’t going to ship an Uno with every product. You might, however, develop a product with an Arduino and embed the ATmega328 inside of it. Or, more likely, you’ll prototype the idea, run it through a crowd funding effort and then redesign.
You have to define what “commercial” means, but there are plenty of products out there that started with an Arduino in the early stages. Ever hear of 3D printers?
4. analogWrite() is Analog
This one catches a lot of people who don’t really understand Pulse-Width Modulation. With the exception of the “Due”, Arduino boards do not output “analog” signals. (Note, you might want to watch this video on the difference between Analog and Digital.) PWM signals are actually digital signals, where you change the length of time between the “on” and “off” states.
5. The Header Spacing was a mistake (or it wasn’t.)
If you know anything about the Arduino pinout, you should know that the spacing between pins 7 and 8 isn’t 0.1″. At one point the Arduino web site had this in the FAQ as an “eleventh hour” mistake. Then there was the explanation that it prevented shields being plugged in backwards. Now, I’m not sure if it was intentional, but it is true that a benefit of the spacing is that you can’t plug in a shield backwards.
The perceived downside to this decision is that it makes the board difficult to plug into a breadboard, or a shield into a breadboard. However, magic jumper wires do exist which solve this “problem.”
Okay, so those are the 5 Myths I encounter most. What other myths have you heard or helped to dispel? Leave them below.