Arduino Getting Started

The Resource Guide for Arduino Boards & Arduino-Based Kits

By Ryan Winters
Product Marketing Manager

Arduino UNO Just because Arduino is open-source and available everywhere, doesn't mean it's intuitively understood. If you're new to the world of Arduino boards and projects, get familiar with what Arduino is and why you'd want to use it. Also introduce yourself to the Arduino Software (IDE) and find out what the heck Arduino libraries are. The Getting Started page is a good place to start, but if you want to dive in, we recommend the Getting Started with Arduino, 3rd. edition book. Using practical lessons will teach you enough to get going or at least give you the confidence that you can take just about any input and control an output.

For the complete introduction with components, get the official Arduino Starter Kit. You've gone through the introduction, downloaded the software and read various tutorials, but something still isn't working? Try the troubleshooting page containing some of the most frequently encountered problems. You should also check out the Arduino Foundations section where you'll find a complete list of guides with comprehensive expertise about the fundamentals and capabilities of the Arduino platform.

The Arduino website has an abundance of information in their Learning section where you can find building and hacking Arduino tutorials. Get a better understanding of Arduino code and syntax (structure) including constants, data types, conversion, true/false statements and their usage in the Arduino language reference section. If these resources weren't enough fun, visit the Arduino Playground where all the users in the Arduino open-source community can contribute, share, and show off their projects and works in progress.

Quick Reference

We've listed a few of the common issues Arduino users face when code fails to upload. The troubleshooting page (linked above) should be your first resource for help.

Arduino Errors When Uploading

If you get a message like "Serial port COM## not found", "Board at COM## is not available", or "Problem uploading to board", your board is either not connected or the drivers aren't installed. If you're using an FTDI breakout board to program Arduino-compatible boards, make sure the FTDI or USB/Serial drivers are installed. "But I'm a computer expert with many years of experience..." That's nice, just make sure the drivers are installed! Even though Windows® made the "ding-dong" sound when you plugged it in, it doesn't mean they're automatically installed. Newer versions of Windows® can be a pain with "digitally signed drivers", and you may have to reboot in an "Advanced Startup" mode so you can "Disable driver signature enforcement". How-to-Geek has a great step-by-step procedure for this process. If you plug into a different USB port, Windows® can assign it a different COM port (which may mean installing the drivers... again).

A good way to verify a driver is installed is to open Device Manager in Control Panel (in Windows®). You can quickly get to device manager by typing "devmgmt.msc" in the Command Prompt or Run menu from Start. Plug in the FTDI or Arduino board. You should see a device populate under the Ports (COM & LPT) section. If Windows® doesn't recognize it or does not have drivers installed, it should have a red or yellow exclamation mark icon on the device. If it still doesn't show up, try a different USB port or review the procedure to disable driver signature in the paragraph above.

Ports (COM & LPT)Click to enlarge

One IDE to Rule Them All

The Arduino IDE is used to program many different types of Arduino boards. Before the IDE uploads the code to your board, it will compile it first. Compiling formats/converts the code from the Arduino language we all know and love, to an object language the processor on the Arduino board can understand and execute. The processors Arduino uses have a variety of inputs, outputs and other features, and they're not all the same. If you don't have the correct board selected, it will compile it for a different board and won't upload because of the processor mis-match. Or it will upload, but when the program runs on the Arduino, it may not perform as you have instructed. Make sure you have your Arduino or Arduino-compatible board selected from the Tools > Board list. Then make sure you are communicating on the right port from the Tools > Port list. If you don't see any port listing, see driver related support.

Libraries Aren't Just for Books

An error compiling, "blahblah.h does not name a type" or "no such file or directory" probably means the required libraries are not installed. Arduino comes with many libraries pre-installed, but sensors and devices like LCDs use libraries to make it easier to communicate with the device. Brush up on libraries if you're having trouble using add-ons. If you see #include "blahblah.h" at the top of your sample code, that is a call out to the library. Instructions are pulled from those libraries during the compile process, so without libraries, the code doesn't make sense to Arduino. Read more on how to install Arduino libraries.

I'm Still Stuck!

You know the drivers are installed, you know you have the libraries, you have the right board and port selected, but something is still not working. You can try uploading a blank sketch that only has the setup(){} and loop(){} defined to verify the Arduino and PC are talking to each other. If you are using an official Arduino board, try uploading the Blink sketch from File > Examples > 01.Basics > Blink. If upload is successful, you should see an LED alternately blink one second on, one second off. If the Blink uploads, but your sketch does not, there is probably something wrong in the code. If all else fails, copy and paste the error message into a web search because chances are there are others experiencing the same problem.

Check out the Arduino Kit Zone for fun Arduino projects and getting started kits.

If you have Arduino stories that you would like to share we want to hear about them. Send us an email to [email protected].
Ryan Winters is a Product Manager at Jameco Electronics and a Bay Area, California native. He is mostly self-taught and his hobbies include working on cars and computers, fiddling with electronic gadgets and experimenting with robotics.