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.
General design
-
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.
Communications
-
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.
Hardware
-
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.
Datasheets
-
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