Sensors and Inputs
Sensors and Inputs[edit | edit source]
Sip/Puff Sensors[edit | edit source]
The Sip/Puff Sensors on the mouthpiece and the individual tube(s) on either side of the joystick can each sense vacuum or pressure over a range of +/-2kPa (4 inches Water Column) and measure the analog value to categorize the strength as high or low, for a combination of four signals per sensor, hard and soft, sip or puff. When a sensor is active, an LED lights to give feedback to the user. Red for puff and Blue for sip.
To avoid triggering a soft sip/puff signal while applying a stronger pressure, a slight delay (typ 1200ms) is used to allow time for the pressure to move out of the soft region, to the hard region, before generating the signal. While the pressure is in the soft region, the corresponding status LED is lit and an audio tone, which varies with pressure, is produced, to give the user feedback about the pressure they are applying.
Once the time delay has expired, or the pressure increases into the hard range, a click sound indicates the signal has been triggered. Once triggered, the Soft signal latches and the pressure must return below a Deactivation Threshold before the signal will release. When either Soft or Hard pressure signals are active, the pressure above the higher threshold can be used as an analog value, like with a Gamepad Trigger. If the Soft pressure zone for a particular tube is not used, the audio tones are suppressed.
The Mouthpiece[edit | edit source]
With a three hole, Left, Center, Right, mouthpiece, this allows for six different hole combinations (L, C, R, LC, CR, LCR, LR (by covering the center hole with the tongue)). Multiply that by two pressure polarities (sip/puff), and two different pressure thresholds (soft & hard), for a total of twenty four signals to be obtained from the mouthpiece Sip/Puff sensors: Adding in the Push switch to act as a “Shift” key, doubles that to forty-eight discrete signals (twelve of which can also be analog), before the joystick is even moved.
With the two hole mouthpiece, a total of twelve signals can be obtained from the mouthpiece Sip/Puff sensors: Three tube combinations (L, R, LR) times two polarities of pressure times two strengths of pressure. Adding in the Push switch to act as a “Shift” key, doubles that to twenty-four discrete signals (six of which can also be analog).
In practice, a small subset of the combinations is typically used but the capability is there when needed for special situations.
Input Name | Description | Delay |
mp_left_sip | Mouthpiece Hard Sip Left sip/puff sensor | instant |
mp_left_puff | Mouthpiece Hard Puff Left sip/puff sensor | instant |
mp_right_sip | Mouthpiece Hard Sip Right sip/puff sensor | instant |
mp_right_puff | Mouthpiece Hard Puff Right sip/puff sensor | instant |
mp_left_right_sip | Mouthpiece Hard Sip Both sip/puff sensors | instant |
mp_left_right_puff | Mouthpiece Hard Puff Both sip/puff sensors | instant |
left_sip | Hard Sip Left sip/puff sensor | instant |
left_puff | Hard Puff Left sip/puff sensor | instant |
right_sip | Hard Sip Right sip/puff sensor | instant |
right_puff | Hard Puff Right sip/puff sensor | instant |
mp_left_sip_soft | Mouthpiece Soft Sip Left sip/puff sensor | delay |
mp_left_puff_soft | Mouthpiece Soft Puff Left sip/puff sensor | delay |
mp_right_sip_soft | Mouthpiece Soft Sip Right sip/puff sensor | delay |
mp_right_puff_soft | Mouthpiece Soft Puff Right sip/puff sensor | delay |
mp_left_right_sip_soft | Mouthpiece Soft Sip Both sip/puff sensors | delay |
mp_left_right_puff_soft | Mouthpiece Soft Puff Both sip/puff sensors | delay |
left_sip_soft | Soft Sip Left sip/puff sensor | delay |
left_puff_soft | Soft Puff Left sip/puff sensor | delay |
right_sip_soft | Soft Sip Right sip/puff sensor | delay |
right_puff_soft | Soft Puff Right sip/puff sensor | delay |
Table 1: Mouthpiece Inputs for Two Hole Mouthpiece
Joystick[edit | edit source]
The joystick measures the deflection from the home, or center, position and produces both continuous analog values and discrete position signals, depending upon the output to which it is connected. When used for the Mouse or one of the Game Pad joysticks, the position is reported as continuously variable with the movement of the joystick. When used with a discrete output, like the D-Pad buttons, or to change the TV channel, when sending Infrared commands, the joystick’s position is divided up into a series of zones, such as North, South, East and West, which triggers a signal when the joystick is moved into a zone.
The Joystick Discrete Zones diagram shows the active areas to which the joystick can be positioned to trigger a signal. The areas of deeper color saturation, around the Cardinal and Ordinal directions, show where the joystick must be to be detected. The lighter mixed color areas between the eight directions show hysteresis areas where the previous signal will remain active until the joystick enters the next detection zone. For instance, starting at North, the joystick can be moved from the Green area, into the Blue-Green-Gray area towards either NE or NW and still maintain the North signal. It can move back into the Green area and no interruption of the North signal will have occurred. However, once the joystick crosses into the Blue area around NE or NW, that new signal becomes active and will remain active as long as the joystick remains in the Blue area or the adjacent Blue-Green or Magenta areas.
Input Name | Description | Delay |
left | Joystick Left Analog value | instant |
right | Joystick Right Analog value | instant |
up | Joystick Up Analog value | instant |
down | Joystick Down Analog value | instant |
N | Joystick Outer ring North zone | instant |
NE | Joystick Outer ring North East zone | instant |
E | Joystick Outer ring East zone | instant |
SE | Joystick Outer ring South East zone | instant |
S | Joystick Outer ring South zone | instant |
SW | Joystick Outer ring South West zone | instant |
W | Joystick Outer ring West zone | instant |
NW | Joystick Outer ring North West zone | instant |
N_inner | Joystick Inner ring North zone | delay |
NE_inner | Joystick Inner ring North East zone | delay |
E_inner | Joystick Inner ring East zone | delay |
SE_inner | Joystick Inner ring South East zone | delay |
S_inner | Joystick Inner ring South zone | delay |
SW_inner | Joystick Inner ring South West zone | delay |
W_inner | Joystick Inner ring West zone | delay |
NW_inner | Joystick Inner ring North West zone | delay |
Table 2: Joystick Inputs
Using External Inputs[edit | edit source]
Input Jack with Two Switches[edit | edit source]
[[Image:|thumb|Illustration 3: Digital Input Connections for Two Switches]]
Input Name | Description | Delay |
digital_in_1 | Input Jack - Tip to Shield (SW1) | instant |
digital_in_2 | Input Jack - Ring to Shield (SW2) | instant |
Table 3: External Inputs 1 & 2
Input Jack with Four Switches[edit | edit source]
[[Image:|thumb|top|Illustration 4: Digital Input Connections for Four Switches]]
Input Name | Description | Delay |
digital_in_1 | Input Jack - Tip to Shield (SW1) | instant |
digital_in_2 | Input Jack - Ring to Shield (SW2) | instant |
digital_in_3 | Input Jack - Ring to Diode to Tip (SW3) | instant |
digital_in_4 | Input Jack - Tip to Diode to Ring (SW4) | instant |
Table 4: External Inputs 3 & 4
USB-A Jack with Two Switches[edit | edit source]
If the USB-A jack is not used for connecting to another USB device, it can be used as another Digital Input channel. Two switches may be connected using the circuit below:
[[Image:|thumb|top|Illustration 5: USB-A Jack with Two Switches]]
Input Name | Description | Delay |
digital_in_5 | USB-A Data - to Gnd (SW1) | instant |
digital_in_6 | USB-A Data + to Gnd (SW2) | instant |
Table 5: Digital Inputs 5 & 6
The QuadStick can detect closures of Switches 1 and 2 independently and simultaneously.
USB-A Jack with Four Switches[edit | edit source]
Input Name | Description | Delay |
digital_in_5 | USB-A Data - to Gnd (SW1) | instant |
digital_in_6 | USB-A Data + to Gnd (SW2) | instant |
digital_in_7 | USB-A Data - to Vcc (SW3) | instant |
digital_in_8 | USB-A Data +to Vcc (SW4) | instant |
Table 6: USB-A Digital Inputs 5, 6, 7 & 8
USB-A Jack with Six Switches[edit | edit source]
Input Name | Description | Delay |
digital_in_5 | USB-A Data - to Gnd (SW1) | instant |
digital_in_6 | USB-A Data + to Gnd (SW2) | instant |
digital_in_7 | USB-A Data - to Vcc (SW3) | instant |
digital_in_8 | USB-A Data +to Vcc (SW4) | instant |
digital_in_9 | USB-A Data + to Diode to Data - (SW5) | instant |
digital_in_10 | USB-A Data - to Diode to Data + (SW6) | instant |
Table 7: USB-A Digital Inputs 5 through 10
USB-A for Chaining 3rd Party Devices[edit | edit source]
This feature is not yet implemented. The purpose of the USB-A connector is to allow a separate gamepad to be used in tandem to the QuadStick's built-in inputs. If the user can operate some or all inputs of another gamepad, the outputs from that device can be treated as Inputs to the QuadStick and mixed in with the rest of the Input sources in a configuration profile.
Voice Commands[edit | edit source]
Through a serial connection, either via Bluetooth or the Input jack, commands may be sent to the QuadStick from a PC. The format for activating output signals is:
output_name,state, value, duration\r
where:
output_name is from the outputs list.
state is 0=off, 1=on, -1=toggle state.
value is an integer percent 0-100.
duration is in milliseconds or -1 for permanent.
Example, press D-Pad North button with half force for 200 milliseconds:
dpad_n,1,50,200\r
Example, press and hold Circle button continuously (until new command or reset):
circle,1,100,-1
Plus direct commands for controlling the operation of the QuadStick:
Command | Description |
---|---|
mode,# | Change selected profile mode to new value |
reset | Clear all output states and values to zero |
boot | Reboot QuadStick |
help | Print a Help messong |
load,filename.csv | Load new configuration profile |
echo | Turn on local echo (for debugging) |
swap,output_name | Exchange inputs for Lip Sensor with another output |
and,output_name | Add a second output to the Lip Sensor |
Print out the active profile | |
debug | Print out internal values |
Commands are usually generated by using Dragon Naturally Speaking or Windows Speech Recognition set up with Vocola, a free voice control language program, plus PuTTY, a free communication program, and a Vocola configuration file available from QuadStick's website, to translate spoken words into the proper form for the QuadStick.
Visit the Support page on the QuadStick website for installation instructions and links to the required programs and files.
As of this writing, the following vocabulary has been developed:
Action Buttons | |||
Square | <nothing> | Pushes button with 100% force for 200 ms | |
Circle | % | Pushes button with % force for 200 ms | |
Triangle | % for ## seconds | Pushes button with % force for ## seconds | |
Xray | For ## seconds | Pushes button with 100% force for ## seconds | |
Home | On | Holds button down with 100% force | |
Select | Off | Releases button | |
Start | Toggle | Releases or Holds button | |
Left One | |||
Left Two | |||
Left Three | |||
Right One | |||
Right Two | |||
Right Three | |||
D-Pad | |||
North | D-Pad Up | ||
North East | D-Pad Up and Right | ||
East | D-Pad Right | ||
South East | D-Pad Down and Right | ||
South | D-Pad Down | ||
South West | D-Pad Down and Left | ||
West | D-Pad Left | ||
North West | D-Pad Up and Left | ||
Analog Sticks | |||
Player | Up | <%> | Holds stick in specified direction by <%> |
Look | Down | <%> | (default = 100%) |
Left | <%> | ||
Right | <%> | ||
Lip Sensor Control | |||
Swap | Square | Switches Lip input with named output | |
And | Circle | Adds named output to Lip input | |
Triangle | |||
Xray | |||
Home | |||
Select | |||
Start | |||
Clear | Clears out Swap funtion | ||
Quadstick Control | |||
Reset | All outputs cleared | ||
Quit | |||
Stop | |||
Mode ## | Switch directly to mode ## | ||
Full Screen | Toggles Full Screen display | ||
Help | Display help text message | ||
Reboot Quad Stick | Restarts the quadstick | ||
Load | Call of Duty | Loads cod.csv file | |
Default | Loads config.csv file | ||
Call of Duty Commands | |||
Reload | Square | ||
Attack | Circle | ||
Weapon | Triangle | ||
Grenade | R2 | ||
Special | L2 | ||
Jump | X | ||
Fire | R1 for two seconds | ||
Down | R3 | ||
Flat | R3 for 350 ms | ||
Sprint <sec> | L3 for <sec> seconds (default = 20 seconds) | ||
Auto | Square for ten seconds | ||
Aim Rifle | L1 toggle | ||
MLB the Show | |||
Pick off | L2 for two seconds | ||
First | L2 for two seconds + Circle | ||
Second | L2 for two seconds + Triangle | ||
Third | L2 for two seconds + Square |
Summary[edit | edit source]
The goal of the QuadStick is to be able to extract as much information as possible using just the mouth, lips, and tongue but to also have a way to incorporate external sensors to take advantage of any other inputs the user can actuate.