How to ask a good question
How to use this forum Tips on using this forum effectively, including uploading images, code, attachments. Also tips on asking good questions, in such a way as to get a good answer.
Read before posting a programming question Tips for how to formulate a good question, including using code tags for your code.
Blink without delay (YouTube video) * An 11-minute YouTube tutorial about state machines and blinking LEDs without using delay().
Planning and Implementing an Arduino Program Tips for planning and organizing your program, from scratch.
How to do several things at a time Tips for doing several things "at once" like testing switches, flashing LEDs, and controlling motors. Also illustrates the use of millis() to manage timing without blocking
How to do multiple things at once * Another thread about doing multiple things "at the same time".
State machines * Discussion about "state machines" which are ways of managing complex logic situations easily, by Nick Gammon.
State machines * Another tutorial about state machines, by Mike Cook.
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.
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 - 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.
Atmega48/88/168/328 datasheet (PDF - 32.9 MB - Rev. 8271J – Nov/2015) *
Atmega640/1280/1281/2560/2561 datasheet (PDF - 8.8 MB - Rev. 2549Q - Feb/2014) *
Atmega16U4/32U4 datasheet (PDF - 5.6 MB - Rev. 7766J – Apr/2016) *
Atmega8U2/16U2/32U2 datasheet (PDF - 4.5 MB - Rev. 7799E – Sep/2012) *
- Links to off-site information. That is, not on the Arduino Forum.
Discussion: Call for a list of useful programming threads