The Arduino supports a USB based joystick to send data from the PC over the USB link to the controller. You can access the joysticks by opening the "Joystick Control - Basic" joystick debugger window. For more information, see the different variables the joystick data will populate to below.
Example Code:
TPCJoystick joystick; //Create the 'joystick' structure to store joystick data.
while(true)
{
getPCJoystickSettings(joystick); //Get the latest data from the joysticks and update the structure.
motor[servo_2] = joystick.joy1_y1; //Assign a motor the value of a joystick axis
motor[servo_3] = joystick.joy1_y2; //Assign a motor the value of a joystick axis
if(joystick.joy1_Buttons & 0x01) //Check if button 1 from the button bit-mask is pressed.
writeDebugStream("Button 1 Pressed");
if(joystick.joy1_TopHat == 0) //Check if the tophat is pressed in the up direction.
writeDebugStream("Top of TopHat Pressed");
}
Joystick Structure Members
joy1_Buttons
| TPCJoystick joy1_Buttons
|
| (TPCJoystick) Returns a "Bit Map" for the 12 buttons on Controller #1. For more information on how to use buttons to control actions, See the "Using Buttons" help section.
|
while(true) // infinite loop:
{
getPCJoystickSettings(joystick); // update buttons and joysticks
if(joystick.joy1_Buttons & 0x20) // if Button 6 is pressed on joy1:
{
motor[servo_2] = 50; // servo_2 is run at a power level of 50
}
}
|
|
joy1_TopHat
| TPCJoystick joy1_TopHat
|
| (TPCJoystick) Returns the value of the direction pad (or "Top Hat") on Controller #1. A value of -1 is returned when nothing is pressed, and a value of 0 to 7 for selected "octant" when pressed.
|
while(true) // infinite loop:
{
getPCJoystickSettings(joystick); // update buttons and joysticks
if(joystick.joy1_TopHat == 0) // if the topmost button on joy1's D-Pad ('TopHat') is pressed:
{
motor[servo_2] = 50; // servo_2 is run at a power level of 50
}
}
|
|
joy1_x1
| TPCJoystick joy1_x1
|
| (TPCJoystick) Value of the X Axis on the Left Joystick on Controller #1. Ranges in values between -128 to +127.
|
while(true) // infinite loop:
{
getPCJoystickSettings(joystick); // update buttons and joysticks
motor[servo_2] = joystick.joy1_x1; // servo_2's powerlevel is set to the left stick's current x-value
}
|
|
joy1_y1
| TPCJoystick joy1_y1
|
| (TPCJoystick) Value of the Y Axis on the Left Joystick on Controller #1. Ranges in values between -128 to +127.
|
while(true) // infinite loop:
{
getPCJoystickSettings(joystick); // update buttons and joysticks
motor[servo_2] = joystick.joy1_y1; // servo_2's powerlevel is set to the left stick's current y-value
}
|
|
joy1_x2
| TPCJoystick joy1_x2
|
| (TPCJoystick) Value of the X Axis on the Right Joystick on Controller #1. Ranges in values between -128 to +127.
|
while(true) // infinite loop:
{
getPCJoystickSettings(joystick); // update buttons and joysticks
motor[servo_2] = joystick.joy1_x2; // servo_2's powerlevel is set to the right stick's current x-value
}
|
|
joy1_y2
| TPCJoystick joy1_y2
|
| (TPCJoystick) Value of the Y Axis on the Right Joystick on Controller #1. Ranges in values between -128 to +127.
|
while(true) // infinite loop:
{
getPCJoystickSettings(joystick); // update buttons and joysticks
motor[servo_2] = joystick.joy1_y2; // servo_2's powerlevel is set the right stick's current y-value
}
|
|