Arduino!

Arduino is the coolest thing ever to happen to the maker world! It is a small programmable circuit board that allows you to add behaviour to almost anything. It has an amazing open source community behind it, and it will teach you to code and get you into physical computing easier than you ever thought possible.

Arduino is programmed in a language called C, with built in libraries that take care of a lot of the difficult stuff, so you can get right into the fun!

After getting an Arduino and a USB cable, the first step is to install the Arduino software.


3 versions of Arduino, a Mini Pro connected up to some Neopixel strips, a classic Uno, and a chinese Nano clone. I try to buy at least half actual Arduinos to support the awesome work of Arduino, but those Nanos are just $5 on ebay, so cheap I can give them away!
Even if you have been using Arduino for a while, the first program you put in it is often "Blink," which is kind of the "hello world" (the classic first program for, like, forever!) for a device that has no screen, at least not when you first take it out of the box. Blink simply blinks an LED on and off, not very exciting, but it establishes that you have everything set up right and that you have communication between your computer and the Arduino. Once you get Blink running you can just keep learning and building from there.

Blink can be found in the examples under the file menu. Under the help menu, is "reference" which will give you descriptions of all the various operators, data types and functions at your disposal.

The important thing to know about Arduino is that it has an inside part, the program which you modify or write yourself, and an outside part, the electronics you connect to it for interacting with the world. The bridge between the inside and outside is called a "pin." This is an old name for the tiny wires that connect integrated circuits (chips)) to the world.

To tell a pin what to do is to "write" to it, to listen to what is going on at a pin is to "read" it. There are two modes for interacting with pins, digital and analog. Digital is thought of as two different states "HIGH" or "LOW." So, if you write a HIGH to a pin, it will be showing the voltage of the supply to the Arduino chip, which is 3.3 or 5 Volts DC. If you write a LOW to a pin, it will be showing zero volts.


the ground symbol is the negative battery connection to the Arduino, and it is always the reference point for voltage measurements. it is zero or LOW. V+ is the positive battery connection or HIGH.
You have 2 basic functions for digital pin interaction, digitalRead() and digitalWrite(). digitalRead takes 1 piece of information in the parentheses, the number of the pin, and it gives you back the state (HIGH or LOW) of that pin at the time. digitalWrite takes two pieces of information, the pin, and the the state you want to set it to (HIGH or LOW).

Note, in the diagram I have a couple of variables which I have named button1 and button2. button1 = digitalRead(6) sets button1 to the value of pin 6; To ask what the value of button1 is 2 equal signs are used, so you would say if(button1 == HIGH) {do something} The single equal sign assigns a value, so button1 = HIGH would just set button1 to HIGH, and its previous state would be lost.