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