Arduino Tutorials
This is the start page for my series of over fifty Arduino tutorials. Each tutorial from chapter zero to thirteen will cover a variety of topics and lessons, then from chapter fourteen each chapter will cover a particular topic.
If you are looking to learn about the world of Arduino – this is a great place for beginners to start, or for more experienced users to brush up on their knowledge. Scroll down to read the contents of each chapter. New tutorials, lessons and other articles of interest are announced via twitter, Google+, RSS feed and by email – to keep up, subscribe using the form in the column to the right. If you’d rather have a great book on Arduino – check out my new book “Arduino Workshop” from No Starch Press.
But what is it? From their web page:
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It’s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.
Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators. The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing). Arduino projects can be stand-alone or they can communicate with software on running on a computer (e.g. Flash, Processing,MaxMSP).
The boards can be built by hand or purchased preassembled; the software can be downloaded for free. The hardware reference designs (CAD files) are available under an open-source license, you are free to adapt them to your needs.
Arduino received an Honorary Mention in the Digital Communities section of the 2006 Ars Electronica Prix. The Arduino team is: Massimo Banzi, David Cuartielles, Tom Igoe,Gianluca Martino, and David Mellis.
If you are shopping for your first Arduino board, please don’t use an Arduino Leonardo – the pinouts vary and for some chapters of this tutorial the board will not work and is not supported here. There isn’t anything wrong with the Leonardo, it just isn’t fully backwards compatible with Uno/Duemilanove boards. A much better solution is the improved upon the original, 100% Arduino Uno-compatible board with built-in prototyping space – the Freetronics Eleven.
Absolute genius!
Over semi-regular intervals you will find a new instalment of my tutorials. If you have not used the system before, please start with Chapter Zero! In the first few chapters of the tutorials we refer to the book “Getting Started with Arduino” by Massimo Banzi. Technical support for the tutorials is available by asking a question in the Google Group. Please note that video clips in the tutorials do not have any voice, but some later ones may have a musical track.
After a few weeks I would hope that you have enough building blocks of knowledge to be able to bring your ideas to life! Files and sketches from each chapter can be downloaded directly from the file repository.
Update – 10/01/2013: I have written these tutorials in a period spanning over two years. During this time several versions of the Arduino IDE have been published. Over the next few weeks I am endeavouring to update the tutorials so that they work with the latest Arduino v1.0.1 (or newer) IDE. In the meanwhile, you can run both v23 (old) and v1.0.1 (and more) on the same machine. Any tutorial noted as updated on 24/11/2012 or later works with the new IDE. Dates are in day-month-year format. Any questions – email john at tronixstuff dot com.
All the original material in these tutorials, unless noted otherwise, is published under a Creative Commons Attribution-Non Commercial-Share Alike v3.0 license. If you would like to use the work in other situations, please email me at john (at) tronixstuff dot com.
A quick summary of where we are up to so far:
Chapter Zero - updated 24/11/2012
- Introduction to the Arduino system
- Basic digital outputs
- Lots of blinking LEDs!
Chapter One - updated 24/11/2012
- learn about electricity
- the for loop
- random numbers
- pulse-width modulation
- fun with RGB LEDs
- reading analogue inputs
- building a voltmeter
- sensing temperature with the Analog Devices TMP36
- sending data back to the host PC with the serial outputs
- libraries
- building a digital thermometer
- LCD modules- please see chapter 24
Chapter Three - updated 09/01/2013
- controlling relays to switch heavy current loads
- creating your own functions
- interrupts
- having lots of fun with servos
- building an analogue electronic thermometer
- learning about binary numbers
- getting more output pins using the 74HC595 shift register
- making noises with buzzers and sounds with speakers
- understanding arrays
- building a temperature data logger
- Controlling more than one 74HC595 shift register
- Using 7-segment LED displays
- We examine and hack a remote control toy car in order to control it with an Arduino
- learn some more functions
- build a binary quiz game – testing your ability to convert binary to base-10
- Using 4-digit 7-segment LED display modules with shift registers
- Examining the Sharp infra-red distance sensor
- Making our first protoshield
- build a device to display values from an analogue sensor
Chapter Six (addendum)
- more about using 4-digit 7-segment LED display modules
- Hexadecimal numbers
- Binary-coded decimal numbers
- the switch…case function
- introduction to the I2C bus (“two wire interface”)
- Using the Maxim DS1307 real time clock IC
- make our own digital clocks!
- Some more timing with the Maxim DS1307
- receive user input via the serial monitor box
- control physical movement with the serial input data
- make our own analogue clock!
- Blink more LEDs with an 8×8 LED matrix display module
- Spend some time considering user interfaces with our projects
- create a function to use a potentiometer to return a number in a desired range of numbers (0~x)
- implement a user-interface on the digital clock from Chapter Seven
- build our own digital alarm clock!
- Creating a minimal Arduino board using a bootrom
- Using Arduino to control a relay with an on/off timer
- build our own dual timer control system with various timing options
- Start using wireless data link modules
- Control digital pins remotely using wireless
- Investigate rotary encoders
- More about rotary encoders
- Using common-anode LED display modules
- Create a button board
- Start the series of making a prototype into a product
- examine piezoelectric buzzers
- continue with our alarm clock, adding a snooze function
- using wireless radio modules to create some remote control systems and sending various data over the airwaves.
Chapter Fourteen - updated 02/03/2013
- A detailed yet simple introduction to using the XBee wireless data transceivers with Arduino projects
Chapter Fifteen - updated 21/02/2013
- A beginner’s guide to RFID with Arduino and RDM630 – Build RFID tag/card readers, RFID control systems, and an RFID data logger with time, date and so on
- Click here for a version that uses Innovations ID-12 or ID-20 RFID readers
Chapter Sixteen - updated 09/01/2013
- Getting started with using ethernet and Arduino – by reader request
Chapter Seventeen - updated 23/01/2013
- Getting started with using GPS receivers and Arduino
Chapter Eighteen - updated 09/01/2013
- Start playing with RGB LED matrix units
Chapter Nineteen - updated 24/01/2013
- More about GPS
Chapter Twenty - updated 10/01/2013
- Arduino and the I2C bus. We learn the basics of reading and writing data to various I2C devices, in preparation for future tutorials.
Chapter Twenty-one - updated 10/01/2013
- More on Arduino and the I2C bus, including I/O expanders and EEPROM use
Chapter Twenty-two - updated 09/01/2013
- Arduino and the AREF pin
Chapter Twenty-three - updated 19/01/2013
- Arduino and the touch-screen
- Arduino and monochrome LCDs (both character and graphical)
Chapter Twenty-five - updated 14/03/2013
- Using analog input to read multiple buttons
Chapter Twenty-six - updated 18/03/2013
- Arduino and GSM cellular – part one
Chapter Twenty-seven - updated 18/03/2013
- Arduino and GSM cellular – part two
Chapter Twenty-eight - updated 19/02/2013
- Arduino and a colour LCD shield
Chapter Twenty-nine - updated 24/04/2013
- Arduino and a colour TFT LCD
Chapter Thirty - updated 09/01/2013
- Arduino and twitter.
Chapter Thirty-one - updated 09/01/2013
- Arduino’s inbuilt EEPROM
Chapter Thirty-two - updated 05/02/2013
- Arduino and infra-red remote control
Chapter Thirty-three - updated 02/03/2013
- Control AC power outlets via SMS
- Arduino and the SPI bus (part two)
- Timing applications with millis()
- Thermal printer!
- How to use the NXP SAA1064 4-digit LED display driver IC with our Arduino systems
- Arduino and single thumb-wheel switches.
- Arduino and four-digit thumb-wheel switch combinations - updated 24/11/2012
- Using one Microchip MCP023017 to add 16 digital I/O ports to your Arduino
- Arduino and Numeric Keypads
- Arduino and Numeric Keypads II
- I/O Port Manipulation
- Using an ATtiny45/85 with Arduino software
- Parallax Ping))) Ultrasonic Sensor
- Using an analog input pin to read four buttons
Chapter Forty-seven - updated 24/11/2012
- Internet-controlled relays
- Arduino and the MSGEQ7 Spectrum Analyzer
- Arduino and KTM-S1201 LCD modules
Chapter Fifty - updated 26/04/2013
- Arduino and ILI9325 colour TFT LCD modules
Chapter Fifty-one - updated 12/05/2013
- using MC14489 LED display driver ICs
- Follow me on twitter to find out when the next article is published
Subscribe to keep up to date – see top-right of this page.
All the original material in these tutorials, unless noted otherwise, is published under a Creative Commons Attribution-Non Commercial-Share Alike v3.0 license. If you would like to use the work in other situations, please email me at john (at) tronixstuff dot com. Feedback, comments, and constructive criticism is always welcome – don’t be shy!




