Useful links - check here for reference posts / tutorials

How to ask a good question

General design


  • I2C * Information about the I2C hardware and protocol, widely used to communicate with various peripheral chips.

  • PC to Arduino comms Discussions about sending text or binary data from an Arduino to a PC, or vice-versa, using Python.

  • Radio/Wireless Transceivers Interfacing * How to interface using RF24L01 2.4GHz transceivers, by Terry King.

  • Serial Input Basics An introduction to using the serial ports on your Arduino, including sending and receiving multiple bytes.

  • Serial data - how to process without blocking * Suggested techniques for receiving incoming serial data, without "blocking" (waiting).

  • SPI * Information about the SPI hardware, widely used to communicate with other chips, shift registers, LCD displays, etc.

C++ programming

  • Arduino functions reference The official reference page for commonly-used functions, like digitalWrite.

  • AVR Libc Home Page * Standard library functions supplied with the IDE, such as CRC checks, EEPROM handling, watchdog timer, sleep management, and much more.

  • Function variables * A discussion about how to store function addresses in variables, and how to make "callback" functions, so that one function can call another one, from a variable.

  • millis() overflow ... a bad thing? * A discussion of how to manage when millis() and micros() overflow.

  • Tips, traps and style guide * A list of common problems encountered by beginners, such as confusing comparison with assignment. Also describes how to disassemble your code, where libraries are located, and other information.

  • What is Scope? A discussion of the use of variables in C++ programs, focussing on their scope and lifetime. Discussions include local and global variables, and the use of the extern keyword.

  • Using PROGMEM * A discussion about putting strings and other data types into Program Memory (PROGMEM), to save RAM.


  • Arduino Basic Connections * Very useful site listing different ways of connecting hardware to your Arduino (schematics).
  • De-coupling capacitors * Why the use of de-coupling capacitors is essential.
  • Interrupts * A discussion about the use of interrupts on the Arduino, including hints and pitfalls.

  • LDRs and IR LEDs (PDF: 862.7 KB) Tutorial on sending and receiving information using light (IR LEDs and LDRs)

  • LEDs * Why you need current-limiting resistors when driving LEDs

  • Pin-outs - assorted * Pin-outs for various boards done by PighiXXX (of Arduino Basic Connections fame) (JavaScript required)

  • Pin-outs - Uno Pin-outs for the Uno board (SPI / I2C etc.)

  • Pin-outs - Mega2560 Pin-outs for the Mega2560 board (SPI / I2C etc.)

  • Power saving * A discussion about running in low-power mode using sleep modes, the watchdog timer, and general tips for reducing power consumption.

  • Rotary encoders tutorial Some suggested methods of handling rotary encoders.

  • Stepper motors tutorial * A tutorial covering the basic principles of stepping motors and stepping motor control systems.

  • Stepper motor basics An introduction to using stepper motors.

  • Switches * Tips for wiring up switches, including debouncing and detecting status changes.

  • Timers * An introduction to the hardware counters/timers.


  • Links to off-site information. That is, not on the Arduino Forum.

Discussion: Call for a list of useful programming threads