Snippets and Sketches for Arduino.

A collection of contributed code snippets and sketches. You can add your own code here. For contributed Libraries see the LibraryList page here.


AVR Related

Ethernet Shield


  • Garg10n3 sketch to interface a low cost Fonera access point with Arduino to make a WiFi camera-equipped RC car.
  • WiFly HTTP temperature server A HTTP server that displays the current temperature, using a WiFly Shield and an LM35 CAZ. Also can send how much memory is free for diagnostics.
  • WiFi SMTP email client SMTP email client code for WiFi shield
  • WiFi POP3 email client POP3 email client code for WiFi shield


  • DCF77 Clock - a binary DCF77 clock with good noise tolerance.
  • The Clock - a DCF77 clock with extraordinary noise tolerance.
  • Code.NTPclient - Low-memory footprint, scheduler-friendly NTP client
  • Code.webclient - Low-memory footprint, scheduler-friendly web time client

Concurrency, Timing & Schedulers

  • heartbeat sketch - use an array to create an irregular blink pattern
  • Stopwatch Sketch: doing multiple things at the same time.
  • A Delay Sketch: An easy to use "blink without delay" style sketch written to be used with the ease of "delay()".
  • How to write reliable repeating and one off timers: Timers that don't use delay() but can cope with software that does delay the main loop().
  • Multi Blink: Demonstrates a table driven approach to concurrency by blinking lots of LEDs at different speeds. The technique is extensible to many other situations.
  • Timer/Interrupt Scheduler: Shows how to create a basic task scheduler using timers and interrupts.
  • Simple Timer This is a simple way to execute functions at different intervals.
  • Object Timeslicer: Uses object-oriented coding to create a network of encapsulated objects, each of which is given a time slice by loop(). The demo does some blink without delay, controlled by an analog input.
  • Task Scheduler - by DL1DUZ: yet another simple Task Scheduler (It can handle all types of tasks that are of practical interest, which are cyclical, single, conditional repetitive (repeat task only if ...) or even non-linear (1st run -> repeat after 10s, 2nd run -> repeat after 25s, ...))
  • SmartDelay - by nw-wind: A simple delay() replacement class which can allow non-blocking delays, pseudo-parallel execution etc. It is an arduino library, so just include & use.

Input / Output


  • EEPROM Load and Save - A sketch to Load and Save settings from/to the EEPROM
  • EEPROM Wear Leveling An example for extending EEPROM endurance by wear leveling
  • EEPROMutility - EEPROM management via the serial monitor. Allows reading and writing of any data type and testing.



String Functions

  • FindText: A simple function to search for some text within a string.
  • tempToAscii - Convert a float to ASCII string with 3 decimal places
  • printf() simple shell around vsnprintf() letting you use send printf style format strings over serial.
  • findStrLen: a simple function to determine the length of any string by incrementing an index and moving down the string until the null terminator ("0", or "0x00"), is found.
  • utf8ascii: a string conversion function for remapping utf8-encoding to extended ASCII characters. Necessary to show special characters on the serial display
  • Parsing an HTTP request Using the in-place method.


  • Prime number generation sketch
  • smooth(data, filterVal, smoothedVal) - a low-pass filter smoothing function, useful for removing sensor jitter
    • digitalSmooth(data, smoothArrayName) - a digital low-pass filter smoothing function, useful for removing sensor jitter, and glitches
  • autoscale(int originalMin, int originalMax, int newBegin, int newEnd, int inputValue) - scale a variable between two ranges using linear interpolation
  • fscale(float originalMin, float originalMax, float newBegin, float newEnd, float inputValue, float curve) - a function to map a variable between two floating point ranges. Can logarithmically favor either end of the output range.
  • smoothstep - a function to ease from one value to the next with a smooth "s" shaped logarithmic curve.
    • nonlinear mapping - reMap() allows to adapt a nonlinear function with line segments.
    • multiMap - multiMap() allows to adapt functions with interpolation - similar as reMap() above - but this one is 100% integer to improve speed, and a bit more hardened.
  • Random Card Draw - Example sketch that demonstrates how to select a number in a range in a random order, where all numbers in the range appear once. Kind of like drawing a card from a shuffled deck.
  • randomHat() - choose every number from a "hat" before repeating
  • A true random seed value - Example sketch that demonstrates how to seed the libraries pseudo-random number generator with a different random value every time the sketch runs. Very 'lightweight' technique.
  • randomWalk(stepSize) - wander between endpoints at a specified rate
  • freqout(freq, duration) - a simple frequency generator
  • Musical Algo Fun - Sketch for making music with old PC speakers
  • Measuring frequency with Arduino - A small and simple code snippet for 0 - 100 kHz range
  • FFT tutorial: Learn how to implement Fast Fourier Transform in Arduino
  • FIR filters tutorial: Learn how to implement FIR (Finite Impulse Response) filters in Arduino
  • PID tutorial: learn how to use PID for temperature control
  • Intersection of circles by the law of cosines. A common problem when triangulating distances.

Performance Snippets