Output Tech (EMS and Vibration Motor)

When your pair of hands reaches out to interact with objects or characters inside a virtual environment,
you may feel familiar and in control. However, the moment your virtual hand penetrates through your surroundings
without any regard to physical properties, that fragile immersion is instantly shattered.

The UnlimitedHand allows you to render Haptics into your interactive systems.
It is essentially a play of kinesthetic force where you decide how objects in a virtual environment
compute and actuate forces that budge against the presence of your hand.
In this tutorial, we will gain understanding of UnlimitedHand's Output Technology.

1.0 Electrode Arrangements

8 electrodes are embedded onto a V-shaped resin sheet to match with the position of key forearm muscles (Figure 1).
This enables the UnlimitedHand to pass currents into specific muscles on the wearer's forearm to trigger involuntary hand and finger movements.
Imagine the computer having a say over your the activity of your hand.

Figure 1. Diagram of the arrangement of Electrodes on the back side of the UnlimitedHand (when used on the Right Hand)

The diagram below lists the 8 types of movement that is capable of being generated by the respective electrodes
Note that the information listed below applies only when worn on the RIGHT HAND.

Figure 2. Electrode - Muscle Correspondence (When used on your right hand)

1.1 How to Use

Hackers of the UnlimitedHand may call the following functions to pass current into one or several electrodes at once.

For Arduino Functions:
initEMS / connectMUX / keepVoltage / updateEMS / updateEMS_HighVoltage / setEMS_LOW / setStimulationTime / setStimulationChannel / setStimulationVoltage

For Unity Functions:
stimulate(int padNum)/setLevelUp/setLevelDown

1.2 Fine Tuning Stimulations

The qualities of electrical stimulus can be tweaked to give off different sensations for the wearer. Intensity, duration and location of the stimulus are the three parameters that can be changed by the developer. With the following piece of code, you can experiment with the configurations.

2.0 Vibration Motor

A vibration motor is embedded into the main case of the device.
It comes in handy when you are not trying to generate hand movements,
but still wish to notify the wearer og a particular event. Depending on the nature of your interactive systems,
multiple vibration patterns can be configured to distinguish one event from another.

2.1 How to Use

Hackers of the UnlimitedHand may call the following functions to configure and/or trigger the vibrating motor.

For Arduino Functions:
SetupVibrationMotor / MoveVibrationMotor / onVibrationMotor / offVibrationMotor /