The Arduino is a pocket-sized computer (also called a "microcontroller") that you can program and use to control circuits. It interacts with the outside word through sensors, leds, motors, speakers... even the internet; this makes it a flexible platform for lots of creative projects. Some popular uses include:

- programmable light displays that respond to music or human interaction
- robots that use information from sensors to navigate or perform other tasks
- unique, customizable controllers and interfaces for music, gaming, and more
- connecting real world objects to the internet (twitter is especially popular)
- anything interactive
- automating and prototyping

There are tons of amazing Arduino Projects posted online, here are some of my favorites:

Twitter Mood Light by RandomMatrix, a light that changes color depending on what kinds of emotional words are trending on Twitter

Nebulophone Synth by Bleep Labs:

Singing Plant by Mads Hobye:

Polargraph Drawing Machine by Sandy Noble:

Flame-Throwing Jack-O-Lantern by Randy Sarafan and Noah Weinstein:

Rain-sensitive light up umbrella by snl017

There are quite a few microcontrollers on the market today, but the Arduino stands apart from the rest becuase of the active online community around it. If you search on google or youtube, you will find tons of great project ideas and information to get you started. Even though you might not have any experience programming or working with a microcontroller, the Arduino is simple to get up and running, and it's a fun way to learn about electronics through experimentation.

This Instructable was written for an Intro to Arduino class I'm teaching at Women's Audio Mission this month. I'll be posting Instructables on more advanced Arduino topics and on building customizable MIDI controllers with Arduino in the next few weeks as the class continues. More info about Arduino can be found on the Arduino reference page.

For this class you will need:

(1x) Arduino Uno Amazon or you can pick one up at a local Radioshack
(1x) usb cable Amazon
(1x) breadboard (this one comes with jumper wires) Amazon
(1x) jumper wires Amazon
(4x) red LEDs Digikey C503B-RCN-CW0Z0AA1-ND
(4x) 220Ohm resistors Digikey CF14JT220RCT-ND
(1x) 10kOhm resistor Digikey CF14JT10K0CT-ND
(1x) tact button Digikey 450-1650-ND
(1x) 10kOhm potentiometer Digikey PDB181-K420K-103B-ND
(1x) RGB LED (common cathode) Digikey WP154A4SUREQBFZGC

Tips on ordering stuff: Digikey is usually the cheapest place you can get components and they ship really fast, but sometimes it's difficult to find what you're looking for because they have so much stuff. If Digikey gives you too much trouble try Jameco, you'll pay a few cents more per component, but it's a lot easier to navigate their inventory. If you need stuff right away, you can find components, breadboards, cables, and Arduinos at your local Radioshack, but you will usually pay a bit more. Adafruit and Sparkfun are good online store for finding cool sensors or other Arduino accessories and they usually have tutorials and sample code for their more complicated parts. Amazon is also a good place to check, right now they have Arduino Unos for $22, which is the cheapest I've ever seen them.

In this Instructable I'll be using 123D circuits to demonstrate and simulate the circuits, the embedded circuit simulations work best with the Chrome browser.

Step 1: What is Arduino

First we'll take a look at all the parts of the Arduino. The Arduino is essentially a tiny computer that can connect to electrical circuits. The Arduino Uno is powered by an Atmega 328P chip, it is the biggest chip on the board (see the image note on the image above). This chip is able to execute programs stored in its (very limited) memory.

We can load programs onto the chip via USB using the Arduino IDE (download this if you haven't already). The USB port also provides power to the Arduino. Alternatively, we could power a programmed board using the power jack, in that case we do not need a USB connection.

The Arduino has a few rows of pins that we can plug wires into. The power pins are labeled in the image above. The Arduino has both a 3.3V or 5V supply; in this class we will use the 5V supply, but you might find some chips or components that require 3.3V to run, in that case the 3.3V supply will be useful. You will also find some pins labeled "GND" on the Arduino, these are ground pins (ground is the same thing as 0V). Electrical current always flows from some positive voltage to ground, so these pins are useful for completing circuits, we will use them often.

The Arduino has 14 digital pins, labeled 0-14, that connect to circuits to turn them on or off, or to measure buttons and other 2-state circuits (a button is two state because it is either pressed or not pressed, as opposed to a dial, which has a range of possible states). These pins can act as either inputs or outputs, meaning they can control a circuit or measure it.

Next to the power connections are the Analog input pins, labeled A0-A5. These pins are used to make analog measurements of sensors or other components. Analog inputs are especially good for measuring things with a range of possible values. For example, an analog input pin will let us measure the amount of flex of a flex sensor, or the amount that a dial has been turned. You can use an analog input to measure a digital component (like a button) or even act like a digital output, they are basically digital pins with extra powers.


<p>just AWESOME for begginers like me........................</p>
<p>Thank you for taking the time to post this. </p>
<p>Hello</p><p>I am developing a data logging. To help my end users in programing I want to create a library of predefined functions. So my question how do I write the library functions?</p><p>Thank you</p>
<p>i was wondering how did you attach the simulation to your website?</p>
<p>I Hooked this up to a motion detector and a relay and made a (crude) automatic light switch</p>
<p>Awesome Instructable. I learned a lot</p>
Useful Instructable
I lobe this tutorial...can i make a video base on your article?<br><br>thnks
<p>Your class have been a great crash course in picking these tools up with out over complicating things, thanks! I am wondering if you could point me in the right direction for working with high power LED's. I have just got my hands on a 3w 200Lumen, here it is. </p><p><a href="http://www.techbrands.com/store/product/xc4468.aspx" rel="nofollow">http://www.techbrands.com/store/product/xc4468.asp...</a> </p><p>I am am trying to move through it through simple trial and error though the huge gaps in my knowledge are not helping. It seems to have its resistors built into it. I have try the dumbest process and swapped the LED in your class with the high power LED to no success. any help would be greatly appreciated :)!! My project is to build a large scale inflatable light project and once i get the light working your code for sound and touch senses will be perfect! </p><p>thanks again</p>
<p>Great tutorial!!!! (5 exclamation points). Being brand new to the world of microcontrollers, this article quickly brought me up to speed with the Arduino. Thank you for a great (!!!!! 5 again) article.</p>
<p>Hi, thanks for this! First time for me ever doing anything like this. I got the LED to light up on the first try which was a huge relief. Now I am stuck on step 5. It looks like the image in step actually contains a button. Is this the correct diagram for step 5?</p><p>Also on step 5, are there any other steps need to upload the code to the Arduino rather than just hitting the upload button? I am troubleshooting and went to Tools and selected a port but I'm just shooting in the dark. Either my code isn't uploading or my components aren't set correctly. Any clarification would be appreciated!</p>
<p>Wow, RIGHT after I posted my last comment I moved a wire to right next to the LED and it started blinking right away. I was not expecting that. I guess I still don't understand everything about how the breadboard works but I think I'm getting it. I didn't think the placement really matter but I can see how it does when everything is acting together.</p><p>Btw, I also removed the positive wire from the first example when doing Step 5. On to Step 6!</p>
<p>Extremely useful. I was afraid of electronics and programming. Now i bigin to understand how they work. Thanks a lot.</p>
<p>lolz took me like half an hour to complete this step now im scared for the projects</p>
<p>Very clear, thanks very much indeed. I'm currently studying beginners Java and can see the similarity. I've ordered my UNO today!</p>
<p>great guide men, wish i had this when i started</p>
<p>Hi,</p><p>If you're looking for a tool to help you create the circuit schematics or code snippets, check this one:</p><p><a href="http://www.circuito.io" rel="nofollow">www.circuito.io</a></p><p>It's free and fast</p>
<p>Never used Arduino before but are very interested what you can make with it, this is great advice and will be looking forward to working for nasa in a couple of weeks after I have made a baby iss thank you</p>
<p>Very informative thankyou... I am hoping to connect LED's to the 6 PWM pins and have them fade in sequence then back up to full brightness on a loop... Does anyone have any hints as the instructions here to do with fading only cover doing one pin at a time?</p><p>I appreciate any help I can get as I am still learning mainly through trial and error but a few pointers will go a long way :)</p>
<p>I have sorted my problem with a bit of experimentation... I am basically building an LED starlight screen for a local hall. I will have 10 LED's connected to each of the 6 pins randomly placed on the screen so when each 10 fade in and out, they look like they are twinkling. The code if anyone wants to make use of it is as follows... </p><p>Also, If anyone has any feedback on a better approach it would be most welcome :)</p><p>//LEDs - fading between 6 PWM pins</p><p>//pin connections</p><p>int row1 = 3;</p><p>int row2 = 5;</p><p>int row3 = 6;</p><p>int row4 = 9;</p><p>int row5 = 10;</p><p>int row6 = 11;</p><p>void setup(){</p><p> pinMode(row1, OUTPUT);</p><p> pinMode(row2, OUTPUT);</p><p> pinMode(row3, OUTPUT);</p><p> pinMode(row4, OUTPUT);</p><p> pinMode(row5, OUTPUT);</p><p> pinMode(row6, OUTPUT);</p><p>}</p><p>void loop(){</p><p> for (int brightness=0;brightness&lt;256;brightness++){</p><p> analogWrite(row1, 255-brightness);</p><p> analogWrite(row2, brightness);</p><p> delay(15);</p><p> }</p><p> for (int brightness=0;brightness&lt;256;brightness++){</p><p> analogWrite(row2, 255-brightness);</p><p> analogWrite(row3, brightness);</p><p> delay(15);</p><p> }</p><p> for (int brightness=0;brightness&lt;256;brightness++){</p><p> analogWrite(row3, 255-brightness);</p><p> analogWrite(row4, brightness);</p><p> delay(15);</p><p> }</p><p> for (int brightness=0;brightness&lt;256;brightness++){</p><p> analogWrite(row4, 255-brightness);</p><p> analogWrite(row5, brightness);</p><p> delay(15);</p><p> }</p><p> for (int brightness=0;brightness&lt;256;brightness++){</p><p> analogWrite(row5, 255-brightness);</p><p> analogWrite(row6, brightness);</p><p> delay(15);</p><p> }</p><p> for (int brightness=0;brightness&lt;256;brightness++){</p><p> analogWrite(row6, 255-brightness);</p><p> analogWrite(row1, brightness);</p><p> delay(15);</p><p> }</p><p>}</p>
<p>Thank you very much for this simple and awesome guide!</p>
<p>Works Great!!!</p>
<p>Great Intro. for Starters :) -Many Thanks</p>
<p>I have a question...I am using prewired LED's is that a problem? I assume all I have to do is wire from the apropriate output and then to the ground?</p>
<p>if they already have current limiting resistors, then yes.</p>
<p>Thanx for the answer! My LED's all have resistors prewired and boy was it simple. Now all I have to do is figuire out how to program what I want it to do! Lol</p>
<p>exactly what i was looking for</p>
<p>Arduino is not a microcontroller, but rather a microcontroller-based SBC (Single Board Computer). The microcontroller is the board's AVR. A power supply for instance, like on Arduino, is never part of a microcontroller, which is a single IC.</p>
<p>you are right....</p>
<p>nice project</p>
<p>Hi all,</p><p>I have purchased a kit &quot;Arduino basics, 15 tutorial in 8 categories&quot;<br>I lost the manual the next day in a train.<br>I am looking for this manual as it covers all the devices in the kit.<br>Could someone post a scan of it?<br>Or could you refer me to where I could found this manual.<br>Thanks</p>
<p>awesome work and very helpful...thanks i learn my first arduino by you..</p>
<p>Thank you for your work, it was helpfull for me.</p>
<p>Well, instead of so much attention Amanda made a mistake.</p><p>digitalWrite(ledState, LOW); </p><p>It should be-</p><p>digitalWrite(ledPin, LOW);</p><p>Same for HIGH.</p>
<p>good catch! I think I fixed it, let me know if there are any more issues. Thanks!</p>
<p>Hey everyone, If you are looking to learn how to program the Arduino, check out this starter shield from fireflyelectronix.com Makes it really easy to learn without having to mess with wiring up components on a breadboard.</p>
helpfull for me.
hi this is an amazing instructable for beginners like me... can you please post an instructable regarding ne 555 timer chip using arduino UNO
<p>hiii </p><p>when button was pressed it randomly sent pressed and unpressed irrespective the button was pressed or not ..can you tell me why it was so ?? as i did re-check my connections still it was happeneing.</p>
<p>maybe try changing the orientation of the button? not sure exactly, hope you worked it out!</p>
<p>On the breadboard diagram on this page,the bottom row is labeled red or positive, but on another diagram in this instructable, the bottom row is labeled black, for ground. Since a black wire is leading from the red row, I wondered if there was an error. </p>
<p>the black wires are all ground, sorry if that was confusing, you can double check bc they are connected to ground on the Arduino. I'm not sure it was always labelled like that!</p>
<p>Excellent instructable, I really liked the way you explain everything so clearly. Thank you very much for this. I can not wait for my Arduino and make the examples</p>

About This Instructable




Bio: I'm a grad student at the Center for Bits and Atoms at MIT Media Lab. Before that I worked at Instructables, writing code for ... More »
More by amandaghassaei:OTCA Metapixel - Conway's Game of Life "9 Degrees of Freedom" IMU Twitter Controlled Pet Feeder 
Add instructable to: