Uploading Code (a Sketch) to Arduino: Step by Step Guide (with pictures)


As an electronics engineer getting back to my roots with Arduino, I found it could be a little confusing getting started uploading code (or sketches) to an Arduino. Installing drivers, IDEs, and everything else involved wasn’t a straightforward task. So I put this guide together based on my experience uploading code to a new Arduino on a new computer.

This guide is a step-by-step (with pictures) on how to upload and run code on an Arduino using a Windows 10 machine. The Arduino I’ve used is the UNO WiFi Rev 2, though the steps (and problems I solved) should be similar for most Arduino models. See common problems at the bottom of this guide if you’re having any issues following the steps. I’ve also tended to use sketch and code interchangeably in this guide, a symptom of being an electronics and software engineer by training.

Step 1: Connect Arduino using a USB Cable

Typically a USB Type-B cable is used to connect to an Arduino – it has the USB 2.0 Type-B connector on one end and the USB 2.0 Type-A connector (for a computer on the other).

A USB Type-B connector suitable for most Arduino

At the store, I asked for a “USB printer cable” as this is also the sort of cable that is used to connect a computer to a printer. It cost me a few dollars. Any standard length seems to be OK, though I imagine it must be shorter than 5 metres (16 feet); I ended up buying a 1m cable.

It didn’t matter which USB socket I used on my computer, they all seemed to work fine when communicating with the Arduino, even the USB Type-C hub that I use with my laptop allowed me to program the Arduino.

A separate power cable is not required; the USB connection to the computer will power the board.

Step 2: Open the Arduino IDE

The IDE (Integrated Development Environment) is used to write code, compile programs, and upload them to the Arduino for it to execute.

The IDE can be downloaded from Arduino’s website here. I used the portable one, so all I had to do was extract it to a folder and run the executable. If installing it, follow the steps in the installation wizard to get started – I believe the installation wizard has the advantage of taking care of installing the drivers for you. It’s the IDE that lets you write code into sketches, compile those sketches into instructions for the processor, and upload those instructions to the Arduino.

If using the portable IDE, you might need to install drivers (this is what I had to do, see “Problems I encountered” below). The easiest way I found to install drivers was to run the executable in the drivers folder where I extracted the executable to.

Folder location for driver installation wizard, choose amd64 for 64 bit or x86 for 32 bit Windows

At first my board wasn’t listed, I had to click some text in the bottom left of the IDE to update it so that my board was shown. I was having a problem with uploading sketches until I clicked this update. Doing this update ran through the driver install wizard as well (installing an additional driver), but I imagine it’s a good idea to run through the wizard separately anyway (as I did above).

Step 3: Select the Arduino Board and Port

Under the Tools menu at the top of the IDE, select your Board and your Port.

Select your board and COM port. Make sure the board selected matches your model.

For Board, I found that mine didn’t show up at first, and the IDE had selected a similar model. This caused me problems later, so make sure your board is selected. If your board isn’t listed, check out the previous steps about installing drivers.

For Port, I found that the IDE automatically selected the correct port as there was only one listed. Some of the research I did said that if there was more than one port, try each of them that’s not COM1 (apparently Windows never allocates this to an Arduino).

If Port is greyed out it means that the IDE does not believe the Arduino is connected to the computer. Connect the Arduino and Port will become an option that can be selected. If the Arduino is connected, it means the IDE cannot identify it, take a look at installing the drivers as per Step 2.

Step 4: Prepare a Sketch (or write some code)

Starting with an example is the easiest way I’ve found of testing out a new Arduino and computer setup, or getting started on your own project.

To use an example sketch, click File then Examples then Basics and I like to start with the blink example. This will load a new sketch that contains code to blink the LED on your board. These examples are already configured for your board so it should blink the correct LED without any need to change the code.

Where to find example sketches. Blink should work on every Arduino.

Even when starting my own project, I like to use one of these examples as a starting point. It’s code and a setup that you know works, which is a good place to start. I then add to the code to accomplish whatever I’m trying to do.

Arduino code, contained in a sketch, is separated into two sections: A setup, that’s run once when the board powers up (or programming has finished); and a loop that runs in a loop as long as there is power to the board. There are other ways that code can be executed (I’m thinking interrupts here), but that’s another article’s worth of detail.

Step 5: Upload Sketch (look for the Tx and Rx LEDs flashing)

To get the code running on the Arduino, click Sketch then Upload. The upload step will also do the verify/compile step, so there’s no need to click it separately for the purposes of this guide.

The RX and TX LEDs should flicker a little as the IDE sends the code to the board.

TX and RX LEDs on an Arduino UNO WiFi Rev 2

I found that as soon as uploading the code was complete, the Arduino started to execute it. This took me a while to realise as the default sketch loaded on my Arduino (UNO WiFi Rev 2) was the Blink one where the LED blinked every second. To test this, I modified the code to flash unevenly (try changing the delay(xx) numbers) so that it was obvious my code was running on the board.

If your code is not running on the board, check out the section below where I go through some of the problems I encountered.

Finishing Up

After following these steps, you should now have:

  • An Arduino connected to your computer
  • An IDE that uploads code/sketches from your computer to your Arduino
  • An Arduino that executes the code that was uploaded to it
“Done uploading” – the sketch should now be running on the Arduino. Note: Despite the errors, the sketch still runs.

If you’re Arduino is not running the uploaded code, there could be a few things that went wrong. I’ve included below how I solved some of the problems I faced when uploading my first sketch to an Arduino.

Common Problems when Uploading Arduino Code

These are the problems I found when I was trying to write my first program to an Arduino:

My Board Wasn’t Listed in the IDE

Under the Tools menu you can see which board the IDE is intending to upload your program to. When I opened the IDE for the first time, it automatically selected a board that was similar to mine but not exactly the same. I encountered problems uploading the sketch to the board because I had the wrong one selected; my board wasn’t even an option!

To fix the problem where the target Arduino is not listed in the Tools menu:

  • Install the latest drivers from Arduino, these can be found in the drivers folder where the arduino.exe file is stored
  • Install any updates for the IDE, look in the bottom left-hand corner when the IDE is first opened – it will alert you here if there are any necessary updates

Wrong COM Port or COM Port Greyed Out

Usually this is due to the wrong drivers being installed for the board you’re using.

If you’ve installed all the drivers and your board is selected in the IDE (see above) but the COM Port still isn’t right, I’ve heard that updating the drivers in the Windows Device Manager is the way to fix this

Programmer is not responding

When I first tried to upload a sketch to my Arduino an error popped up saying something like avrguy: programmer is not responding.

From my experience in microcontroller electronics (I’m relatively new to Arduino), the Arduino that runs your code can be a separate board to the device that records the program to the Arduino (the ‘programmer’). On my first Arduino (an UNO WiFi Rev 2), the programmer and the microprocessor are part of the same board. Other Arduinos might have different configurations – e.g. having a separate programmer can save space as it doesn’t always need to be attached.

To fix this problem:

  • Ensure the correct board is selected in the Tools menu of the IDE
  • If there is an option to select the Programmer (in the Tools menu), then make sure the correct programmer is selected
  • Ensure the correct drivers for your Arduino (and programmer if separate) are installed on your computer – see the steps above on how to do this

After many years away from electronics projects, Chris recently dived back in by picking up an Arduino. This guide was written based on his first experiences setting up a computer to program an Arduino.

Chris

Engineer and electronics enthusiast. Enjoys solving problems with electronics and programming.

Recent Posts