Arduino Output

Annotated Arduino Output settings interface
Allows events from within the GUI to control the state of digital output pins on an Arduino running Firmata. Provides a quick and easy way to translate information from software to hardware.

Plugin Type

Sink

Platforms

Windows, Linux, macOS

Built in?

Yes

Key Developers

Josh Siegle

Source Code

https://github.com/open-ephys/plugin-GUI/tree/main/Plugins/ArduinoOutput

Configuring your Arduino

This plugin works with any Arduino running the Firmata firmware. To install this on your device, first make sure you’ve downloaded the Arduino IDE (version 1.0 or higher) for your platform of choice.

Next, connect the Arduino to your computer and upload the sketch in File > Examples > Firmata > StandardFirmata. This will allow your computer to control the state of the Arduino from software.

Annotated Arduino Output settings interface

Caution

Trying to connect to an Arduino that’s running firmware other than Firmata can cause the GUI to crash.

Plugin configuration

In order for the Arduino to send output pulses, you’ll need a signal chain capable of generating TTL events. These can either come from a source node (such as the Rhythm Plugins, with the I/O board connected to the Digital Input port) or from a processor that generates events (such as the Phase Detector).

Before you start acquisition, select the Arduino device you want to use via the device selector drop-down menu. It will take a few seconds for the GUI to initialize communication with the board. The status of the connection will appear in the Message Center, and the plugin will turn green if the connection is successful.

Note

On Mac the Arduino often appears as a USB modem.

After the device is connected, there are three parameters can be changed:

  • OUTPUT_PIN: The digital I/O pin on your Arduino that will mimic the state of a TTL input line.

  • INPUT_LINE: The TTL line that will be translated into digital outputs.

  • GATE_LINE: The TTL line that will gate the hardware output. If this is set to a value other than zero, the Arduino will only send output when the gate line is “high.”