It’s Hard, We Know

Simplifying optogenetics equipment

I’ve mentioned once or twice the LED-based optogenetics system I’ve been working on recently, so I thought today I would put my faithful readers out of their misery and explain what I’ve been up to.

The driving force behind it was to simplify optogenetics experiments for the user, particularly with the hardware/user interface. I was actually reminded of this again yesterday, when it took me a while to sort out the stimulation protocol on the Radiant software I use for my optogenetics experiments.

So what I wanted was an easily programmable computer hardware that I could connect various LED’s and switches to, and there was really only one answer for me: an Arduino.

The Arduino Uno

For those that don’t know, Arduino is an open-source hardware/software company that produce electronics boards for the easy programming and use of microcontrollers. Their bog-standard model is the Uno (Figure 1); it has a USB input for easy programming by a computer and pin headers so you can easily connect to the microcontroller, for 14 digital in/out pins and 6 analog in pins.

I’ll save an indepth investigation into microcontrollers for another day. For now, suffice it to say that you can connect a huge array of sensors (eg. light detectors, or even switches) and outputs (eg. LED’s), and the Arduino will control them in whichever way you programmed it to.

The Arduino Uno

Controlling optogenetics

Anyway, my goal was to generate a TTL output to drive flashing of the LED, effectively controlling optogenetics with Arduino. Essentially, I want a physical switch that I can use to turn the flashing on and off, and the Arduino will output a signal for the stimulation parameters that I program it to do.

So, my electronics layout will look something like this (Figure 2). I have a toggle switch connecting pin 0 to ground (it has an internal pull-up resistor that sets the pin high, then latching the switch changes the signal to low), a pilot LED connected to pin 1, and an output TTL from pin 2.

Simple circuit for Arduino to flash and LED.

Coding the Arduino Uno

Next, we need to write the code, otherwise the Arduino will just sit there and do nothing. Fortunately, Arduino programming software is really easy to use, and they have endless tutorials and sample code online; if you want to do something but don’t know how, just type it into Google and someone will almost certainly have done it before.

To write our code, we have three sections:

  1. Naming any values
  2. Setup, which is where you instruct the Arduino for its beginning attributes
  3. Loop, which is the main program, and the Arduino will just cycle through your code endlessly in a loop, doing exactly whatever you tell it to do

Some notes on syntax:

  • Int          allows you to specify anything by an integer
  • ;              denotes the end of each “phrase”
  • {  }          denote each section or subsection
  • //            blanks out anything after it on that line, which is useful for putting in comments that won’t affect the program

Without further ado, here’s the simple program I wrote to run the TTL:

Arduino code for controlling optogenetics

I’ve put info into the comments about what the bits of code mean, hopefully it all makes sense. I found the Arduino to be quite easy to code (which I’m pretty sure is the point of them), so I would absolutely recommend any readers to pick one up. Anyone planning in vivo or in vitro optogenetics studies should consider controlling optogenetics with Arduino.

Even if you have no specific projects in mind, I think it’s great for everyone to have at least a basic understanding of electronic circuits and coding. And you might just find that you can solve some problems much easier than you thought.

A device for controlling optogenetics

I will add here an update about a device I have made to easily control optogenetics. I added a couple of dials to allow the user to easily switch pulse on-time and frequency, and housed it with a BNC output for the TTL. I have called it the EasyTTL Uno, and it is available to purchase in my shop. Alternatively, I have made the design specs and code freely available on Hackaday.

The EasyTTL Uno provides a single channel TTL output for controlling an optogenetics laser or LED. Stimulation parameters (pulse on-time and pulse frequency) are controlled by dials, and the flashing is turned on/off with a toggle switch. It’s super-easy to use, and fully customisable if you want to set your own flashing parameters. Please do check it out.

2 thoughts on “It’s Hard, We Know”

Leave a Reply

%d bloggers like this: