Software
In order to facilitate the control of our electrode array, we created an Android app that could connect to an Arduino via Bluetooth and send matrices of pattern data to program into our E.coli. The reason for this was double. From a purely practical perspective, the necessity to centre the voltages of our control logic around 0V (or the electrochemical reference voltage, close to 0V) made direct interfacing of the Arduino with a computer via a cable impossible. This impossibility left us with only two options for array control: either using pre-programmed arrays, with no ability to control the arrays without hard-coding the patterns into the Arduino (which we discarded) or use a wireless connection to send patterns remotely to the array. The second reason for opting for a wireless programming scheme was to increase the usability and flexibility of the hardware, as well as to make the project accessible to a wider audience by removing the need for the user to be able to program in order to use the device.
The app uses a pixel-drawing user interface, upon which the user draws patterns with their fingers. It incorporates a paintbrush tool, an eraser tool, a 'clear' tool, a swipeable menu, and a 'done' button. The menu contains pre-programmed patterns in multiple colours, and serves as both a way for the user to select pre-programmed patterns, and to select a colour with which to paint. Upon finishing their design, the user clicks done, and a prompt is displayed which asks the user to confirm that they have finished. Upon confirmation, the app searches for a paired electrode array, and, if successful, sends the data to it. There are individual error messages for both the case of the device being unable to initialise Bluetooth and find a paired array, and for the case of the device being unable to connect to the discovered array and successfully send the data.
The design was kept minimalistic, both in order to make the app intuitive to use, and to avoid overinflating the expectation of the users. For example, during the initial stages of app development, the user was able to draw patterns using multiple colours simultaneously. However, this feature was deemed misleading, since the electrode array is only capable of binary programming, and so this feature was removed.