How to ask a good question- How to use this forum (http://arduino.cc/forum/index.php/topic,148850.0.html)
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 (http://forum.arduino.cc/index.php?topic=97455.0)
Tips for how to formulate a good question, including using code tags for your code.
General design- Blink without delay (YouTube video) (https://www.youtube.com/watch?v=3VZgaJBrZD8) *
An 11-minute YouTube tutorial about state machines and blinking LEDs without using delay().
- Planning and Implementing an Arduino Program (http://forum.arduino.cc/index.php?topic=261445.0)
Tips for planning and organizing your program, from scratch.
- How to do several things at a time (http://forum.arduino.cc/index.php?topic=223286.0)
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 (http://www.gammon.com.au/blink) *
Another thread about doing multiple things "at the same time".
- State machines (http://www.gammon.com.au/statemachine) *
Discussion about "state machines" which are ways of managing complex logic situations easily, by Nick Gammon.
- State machines (http://www.thebox.myzen.co.uk/Tutorial/State_Machine.html) *
Another tutorial about state machines, by Mike Cook.
Communications- I2C (http://www.gammon.com.au/i2c) *
Information about the I2C hardware and protocol, widely used to communicate with various peripheral chips.
- PC to Arduino comms (http://forum.arduino.cc/index.php?topic=225329)
Discussions about sending text or binary data from an Arduino to a PC, or vice-versa, using Python.
- Radio/Wireless Transceivers Interfacing (http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo) *
How to interface using RF24L01 2.4GHz transceivers, by Terry King.
- Serial Input Basics (http://forum.arduino.cc/index.php?topic=396450)
An introduction to using the serial ports on your Arduino, including sending and receiving multiple bytes.
- Serial data - how to process without blocking (http://www.gammon.com.au/serial) *
Suggested techniques for receiving incoming serial data, without "blocking" (waiting).
- SPI (http://www.gammon.com.au/spi) *
Information about the SPI hardware, widely used to communicate with other chips, shift registers, LCD displays, etc.
C++ programming- Arduino functions reference (https://www.arduino.cc/en/Reference/HomePage)
The official reference page for commonly-used functions, like digitalWrite.
- AVR Libc Home Page (http://www.nongnu.org/avr-libc/user-manual/modules.html) *
Standard library functions supplied with the IDE, such as CRC checks, EEPROM handling, watchdog timer, sleep management, and much more.
- Function variables (http://www.gammon.com.au/callbacks) *
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? (http://www.gammon.com.au/millis) *
A discussion of how to manage when millis() and micros() overflow.
- Tips, traps and style guide (http://www.gammon.com.au/tips) *
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? (http://forum.arduino.cc/index.php?topic=383064.0)
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 (http://www.gammon.com.au/progmem) *
A discussion about putting strings and other data types into Program Memory (PROGMEM), to save RAM.
Hardware- Arduino Basic Connections (http://www.pighixxx.net/test/abc/) *
Very useful site listing different ways of connecting hardware to your Arduino (schematics). - De-coupling capacitors (http://www.thebox.myzen.co.uk/Tutorial/De-coupling.html) *
Why the use of de-coupling capacitors is essential. - Interrupts (http://www.gammon.com.au/interrupts) *
A discussion about the use of interrupts on the Arduino, including hints and pitfalls.
- LDRs and IR LEDs (PDF: 862.7 KB) (http://forum.arduino.cc/index.php?action=dlattach;topic=288303.0;attach=107361)
Tutorial on sending and receiving information using light (IR LEDs and LDRs)
- LEDs (http://www.thebox.myzen.co.uk/Tutorial/LEDs.html) *
Why you need current-limiting resistors when driving LEDs
- Pin-outs - assorted (http://www.pighixxx.net/test/pinoutspg/boards/) *
Pin-outs for various boards done by PighiXXX (of Arduino Basic Connections fame) (JavaScript required)
- Pin-outs - Uno (http://forum.arduino.cc/index.php/topic,84190.0.html)
Pin-outs for the Uno board (SPI / I2C etc.)
- Pin-outs - Mega2560 (http://forum.arduino.cc/index.php?topic=125908.0)
Pin-outs for the Mega2560 board (SPI / I2C etc.)
- Power saving (http://www.gammon.com.au/power) *
A discussion about running in low-power mode using sleep modes, the watchdog timer, and general tips for reducing power consumption.
- Rotary encoders tutorial (http://forum.arduino.cc/index.php?topic=261411.0)
Some suggested methods of handling rotary encoders.
- Stepper motors tutorial (http://homepage.divms.uiowa.edu/~jones/step/) *
A tutorial covering the basic principles of stepping motors and stepping motor control systems.
- Stepper motor basics (http://forum.arduino.cc/index.php?topic=284828.0)
An introduction to using stepper motors.
- Switches (http://www.gammon.com.au/switches) *
Tips for wiring up switches, including debouncing and detecting status changes.
- Timers (http://www.gammon.com.au/timers) *
An introduction to the hardware counters/timers.
Datasheets- Atmega48/88/168/328 datasheet (http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf) (PDF - 32.9 MB - Rev. 8271J - Nov/2015) *
- Atmega640/1280/1281/2560/2561 datasheet (http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf) (PDF - 8.8 MB - Rev. 2549Q - Feb/2014) *
- Atmega16U4/32U4 datasheet (http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf) (PDF - 5.6 MB - Rev. 7766J - Apr/2016) *
- Atmega8U2/16U2/32U2 datasheet (http://www.atmel.com/images/doc7799.pdf) (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 (http://forum.arduino.cc/index.php?topic=383980.0)