Arduino Delay Line Control


This combines an Arduino Nano with an AL422 3MBit FIFO to create a variable-length digital delay-line, controlled by a Linux command-line application.
With a clock of 25 MHz, the delay length can be 5120-15728640 ns, or bypassed entirely.

The circuit is quite simple: the FIFO can either be switched into the signal path or bypassed. While bypassed, the Arduino can empty it, or pre-fill it to a given level; this means that the delay is configurable.

The software includes an Arduino sketch (converting a serial-protocol into actions), and the corresponding Linux command-line application (in C) which interfaces to it.

It should be useful for any application which requires communication between the shell and the Arduino. For example:
arduino_delay -l causes the Arduino's diagnostic LED to blink.
arduino_delay -u gets the Arduino's uptime.


  • This is a very complete, carefully documented solution, ready to use and easy to modify. It's all written in C.
  • Documentation is in the README.txt, the man pages, and by invoking each command with -h. Or read the source.
  • To install, simply: make && sudo make install
  • Use the arduino_eeprom_config instructions if you want to create a custom udev-rule.
  • This is Free Software released under the GNU GPL v3+. Please feel free to take it, modify it, package it etc.
  • Author: Richard Neill. Do ask if you would like further information and assistance. PCB layout available on request.


This was written as part of my PhD Infrared Camera system. It should be possible to adapt it for wider usage.
Please ignore references to "ircam" (the IR-camera system) and NI4462 (the National Instruments device whose flaws this hardware was created to bypass).




Some selected files, from the tarball: Readme and Man-pages.


Return to all programs, site home.