Difference between revisions of "Arduino"
(Use wiki table, and put pin column first since the bit and decimal values are closely related.) |
(Explain how to use Arduino-Switch first using the table; the binary math reasoning is secondary.) |
||
Line 95: | Line 95: | ||
=== Digital IO === | === Digital IO === | ||
− | + | All possible combinations of digital outputs that can be set across pins 8 to 13 can be set by a single number from from 0 to 63, with 0 turning off all pins and 63 turning all pins on. | |
− | + | To choose the set of pins to be on for your <code>Arduino-Switch-State</code> pattern, simply add all the decimal values for the pin from the table below; so for pins 8 and 10 to be on, needs a decimal value of 1 + 4 = '''5''' to be set in <code>Arduino-Switch-State</code>. | |
{| class="wikitable" | {| class="wikitable" | ||
− | ! Pin || Bit || Value when | + | ! Pin || Bit || Decimal Value when On |
|- | |- | ||
| 8 || 0 || 1 | | 8 || 0 || 1 | ||
Line 114: | Line 114: | ||
| 13 || 5 || 32 | | 13 || 5 || 32 | ||
|} | |} | ||
+ | |||
+ | The reason one has to do this is MM encodes the pins as bits in binary. Pin 13 to open corresponds to the most significant bit 5, whose decimal value is 2^5 = 32. Similarly pin 10 will be bit 2 which is 2^2=4. | ||
=== Device Properties === | === Device Properties === |
Revision as of 17:57, 13 July 2014
Summary: | Adapter for the Arduino electronics prototyping platform |
---|---|
Author: | Nico Stuurman |
License: | LGPL |
Platforms: | Linux, Mac, and Windows |
Since version: | 1.3.18 |
Automated Serial Port Setup: | Yes |
Peripheral device discovery: | No |
Wiki page: | Nico Stuurman Pariksheet Nanda Roy Wollman |
The Arduino is a low cost programmable digital IO board. It has some digital inputs and digital outputs and can communicate with the computer through a serial interface (that is hidden in a USB connection). A very nice and simple programming language makes the Arduino very simple to program. The Micro-Manager interface to the Arduino consists of an Arduino program (the 'firmware') that you need to upload to the Arduino first. The current version of the Micro-Manager has facilities to use the Arduino as a shutter, and as a shutter that only opens when a TTL is set high (for instance, when the camera is exposing). Also, timed sequences of TTL output can be setup. There are also facilities for programmable analogue out, however, those need connection of a DA chip and requires constructions of a 'daughterboard'/'shield'.
(Image source .svg file)Contents
Installation
Arduino Software
Download and install the Arduino Software for your platform. Establish a connection with your Arduino using the instructions that come with the Arduino software (this includes installing a driver for the USB to serial adapter built into the Arduino.
Firmware
Then download the firmware source code and copy into the Arduino editor. Send to the Arduino, and your Arduino is programmed to work with Micro-Manager.
Hardware Configuration Wizard
Hub
Add the Arduino-Hub. You may want to set the "Verbose" property of the port to 0 to avoid extensive logging of the communcation with the device, especially if you are using the input functionality (which queries the Arduino every second).
Pre-Initialization Properties | Description |
---|---|
Logic | Inverted causes digital inputs and outputs to be considered HIGH when 0 Volts and LOW when +5 Volts. |
Serial Setting | Value |
---|---|
AnswerTimeout | 500 |
BaudRate | 57600 |
DelayBetweenCharsMs | 0 |
Handshaking | Off |
Parity | None |
StopBits | 1 |
Verbose | 0 |
Peripheral Devices Setup
Name | Description |
---|---|
Arduino-Switch | Digital output pattern set across pins 8 to 13. See usage in #Digital IO |
Arduino-Shutter | Toggles the digital outputs pattern across pins 8 to 13. Set all pins off when the shutter is closed, and restores the value set in Switch-State when the shutter is opened.
|
Arduino-Input | Reports, both, the digital and analog (0-1023) state of the analog input pins 0 to 5. |
Arduino-DAC{1,2} | (Not usually used) Reserved for TLV5618 AOTF Peripheral. There does not appear to be any documentation of this peripheral and seems to be a bespoke AOTF control board built for UCSF. |
Initialization Properties | Description |
---|---|
Pin | Reads all 6 input pins when set to All, otherwise reads the individual 0-5 Pin number. |
Pull-Up-Resistor | Choose whether the Arduino should use its internal 20 kOhm internal pull-up resistor. If not sure, choose On. |
Test Communication
Arduino boards Duemilanove and newer feature an LED attached to pin 13. One can verify the Arduino is communicating by changing the state of pin 13 and verifying the LED changes. Setting pin 13 HIGH requires setting the Arduino-Switch-State
to 32 (i.e. 2^5) in the Device/Property Browser
. If you added the Arduino-Shutter
peripheral to the Arduino-Hub
toggle the Arduino-Shutter
in the main MM window, or if you don't have it change the Arduino-Switch-State
back to 0 to see the LED go off.
Usage Notes
Digital IO
All possible combinations of digital outputs that can be set across pins 8 to 13 can be set by a single number from from 0 to 63, with 0 turning off all pins and 63 turning all pins on.
To choose the set of pins to be on for your Arduino-Switch-State
pattern, simply add all the decimal values for the pin from the table below; so for pins 8 and 10 to be on, needs a decimal value of 1 + 4 = 5 to be set in Arduino-Switch-State
.
Pin | Bit | Decimal Value when On |
---|---|---|
8 | 0 | 1 |
9 | 1 | 2 |
10 | 2 | 4 |
11 | 3 | 8 |
12 | 4 | 16 |
13 | 5 | 32 |
The reason one has to do this is MM encodes the pins as bits in binary. Pin 13 to open corresponds to the most significant bit 5, whose decimal value is 2^5 = 32. Similarly pin 10 will be bit 2 which is 2^2=4.
Device Properties
Properties | Description |
---|---|
Switch-Blank On | Allows Low or High. |
Switch-Blanking Mode | Allows On or Off. |
Switch-HubID | |
Switch-Label | Set the digital output pattern across pins 8 to 13. Allows values 0-63. See usage in #Digital IO |
Switch-Sequence | Off operates the Arduino in normal "switching" mode. On enables triggered "sequencing" mode. One defines and upload multiple pattern states to the Arduino using a Beanshell script. Then the digital input signal to pin 2 switches between the sets of patterns. Typically, one would connect the camera exposure signal to pin 2. |
Switch-State | Set the digital output pattern across pins 8 to 13. Allows values 0-63. See usage in #Digital IO |
Input-AnalogInput{0:5} | 10-bit value of ADC input. |
Input-DigitalInput | Value depends on how the Pin initialization property was set. Shows binary state of the input pin, if a single in was selected. Shows the 5-bit value of all input pins if "All" was selected.
|
Input-HubID | |
DAC{1,2}-HubID | (Not usually used) Reserved for TLV5618 AOTF Peripheral. |
DAC(1,2}-Volts | (Not usually used) Reserved for TLV5618 AOTF Peripheral. |
Project Tutorials
- TTL control of multiple LEDs by David Knecht.
- Detect tube lens position of Nikon Ti Eclipse
- Control laser shutter with Arduino by Rocco D'Antuono.