Along with the hardware tools in OpenMaze, we wanted to give some ideas about sofware tools to use for such experiments. There are often many approaches to solving the same problems, so we have presented only a few different methods for addressing these issues.
The software we've provided falls into four main categories:
Arduino sketches. A sketch is a text file containing a program that you can compile and upload to the Arduino in order to tell it what to do. They are written in a language that is very similar to C++. We've provided some example sketches that work with our boards that will help you get started, even if you're not familiar with C++.
Processing.org sketches. You can run Processing on your computer during the experiment to display the results in real-time. The Processing language is extremely similar to the Arduino language. These sketches communicate with the Arduino via USB during the experiment and can be written to perform a wide variety of tasks, such as display graphical progress of the experiment, triggering video capture, and more. We've provided some Processing sketches to get you started.
Python scripts. We've also written some programs in Python, essentially as an alternative to Processing. Like C++, Python is a programming language that is free to use; however, Python is a "high-level" language that many people find easier to use. These scripts also provide a graphical display of the progress of the experiment, in addition to some extra features that allow you to modulate the experimental parameters in real time without reprogramming the Arduino.
Matlab scripts. Matlab is also a high-level programming language. Unlike C++ and Python, Matlab costs money to use and is proprietary. However it is widely used in science and many useful "toolboxes" (add-ons) are available. We've provided code using the Psychophysics Toolbox to display visual stimuli.`
Which software should I use?
First of all, you'll need to use Arduino sketches no matter what, because this is how you tell the Arduino what to do.
The choice of Processing, Python, or Matlab depends on 1) what you want to do, and 2) what languages you're most comfortable with.
If you only want to learn one language, use Processing because it is basically the same language that the Arduino uses. Also, if you're a beginning programmer, these scripts will probably be the easiest to understand.
If you want to display visual stimuli or use the Psychophysics Toolbox, you should check out our Matlab scripts (however we are in process of switching to PsychoPy for the same functionality in Python).
If you want maximal control over the flow of the experiment, check out our Python scripts.
Of course, these are just guidelines and recommended starting points. You can really do almost anything in almost any language; it's just a question of personal preference!
We are currently in process of migrating our code to Github, so stay tuned for updated links for sample code soon.
Please feel free to contact us if:
you'd like help working with the resources we've provided
you've written something related that you'd like to share
you're interested in hearing about future developments in open behavioral control software