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.

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


  • 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

Performance Snippets