The way to fix the problem of drifting is to change
int mouseX = map( xValue,-512, 512, 10, -10); to int mouseX = map( xValue,-512, 512, 10, -9);
the code for it is: (it fixes the drifting problem. I am working on a way to use different combonations of buttons to control a keyboard
/*
Esplora Joystick Mouse
This sketch shows you how to read the joystick and use it to control the movement
of the cursor on your computer. You're making your Esplora into a mouse!
WARNING: this sketch will take over your mouse movement. If you lose control
of your mouse do the following:
- unplug the Esplora.
- open the EsploraBlink sketch
- hold the reset button down while plugging your Esplora back in
- while holding reset, click "Upload"
- when you see the message "Done compiling", release the reset button.
This will stop your Esplora from controlling your mouse while you upload a sketch
that doesn't take control of the mouse.
Created on 22 Dec 2012
by Tom Igoe
This example is in the public domain.
*/
#include <Esplora.h>
void setup()
{
Serial.begin(9600); // initialize serial communication with your computer
Mouse.begin(); // take control of the mouse
delay(100);
}
void loop()
{
int xDrift = map(Esplora.readJoystickX(), -512, 512, 10, -10); // finds the drift value for x and maps it
int yDrift = map(Esplora.readJoystickY(), -512, 512, -10, 10); // finds the drift value for y and maps it
do
{
int xValue = Esplora.readJoystickX(); // read the joystick's X position
int yValue = Esplora.readJoystickY(); // read the joystick's Y position
int button = Esplora.readJoystickSwitch(); // read the joystick pushbutton
Serial.print("\nJoystick X: "); // print a label for the X value
Serial.print(xValue); // print the X value
Serial.print("\tY: "); // print a tab character and a label for the Y value
Serial.print(yValue); // print the Y value
Serial.print("\tButton: "); // print a tab character and a label for the button
Serial.print(button); // print the button value
Serial.print("\txDrift: ");
Serial.print(xDrift);
Serial.print("\tyDrift: ");
Serial.print(yDrift);
int mouseX = map( xValue,-512, 512, 10, -9); // map the X value to a range of movement for the mouse X
int mouseY = map( yValue,-512, 512, -10, 10); // map the Y value to a range of movement for the mouse Y
Mouse.move(mouseX-xDrift, mouseY-yDrift, 0); // move the mouse
delay(10); // a short delay before moving again
} while(xDrift != 0 || yDrift != 0); // checks for drift
}