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 email client 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.
  • Simple Calendar I made this a while back and just found it in the depths of my Arduino sketches, so I think I'll share it.

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.


  • 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 - Sketech 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

Performance Snippets

  • ShowInfo - Show what the Arduino has to tell you, including speed tests of various operations
  • divmod10() : a fast replacement for /10 and %10 (unsigned).
  • divu5() and divu3(): Fast replacements for unsigned division by 3, 5, 6, 10, 15 and more
  • fastModU64() fast modulo for primes, 3x faster U64 % U16 code

Motor Related