Paso 4: El código
Conectar tu arduino al ordenador, iniciar el programa de arduino, luego copiar y pegar este código.Una breve explicación:
El potentionmeters alimenta valores a arduino en función de su posición. Estos valores se utilizan para determinar la velocidad y dirección del cursor debe moverse. El arduino luego enviar esta información a la computadora. Cuando el botón es presionado, el estado del pin digital 2 cambiado a alta y el arduino enviar un comando para haga clic en el ratón para el ordenador.
Desde arduino.cc:
/*
JoystickMouseControl
Controla el ratón desde un joystick en un Arduino Leonardo o Micro.
Utiliza un pulsador para encender y apagar el control del ratón, y
un segundo pulsador a haga clic en el botón izquierdo del ratón
Hardware:
* 2-axis joystick conectado a los pines A0 y A1
* los botones conectados a la clavija D2 y D3
El movimiento del ratón es siempre relativa. Este bosquejo Lee
análogo de dos entradas que van desde 0 hasta 1023 (o menos en cada extremo)
y traduce en rangos de 5:54.
El bosquejo supone que los valores de reposo de joystick son alrededor de la
medio de la gama, pero que varían dentro de un umbral.
ADVERTENCIA: Cuando utilice el comando Mouse.move(), el Arduino tiene
sobre el ratón! Asegúrese de que usted tiene el control antes de utilizar el comando.
Este esquema incluye un pulsador para cambiar el estado de control de ratón, así que
Usted puede activar y desactivar el control del ratón.
creado el 15 de septiembre de 2011
actualizado 28 de marzo de 2012
por Tom Igoe
Este código es de dominio público
*/
establecer números de pin para el interruptor, ejes del joystick y LED:
const int switchPin = 2; interruptor para encender y apagar el control del ratón
const int botón ratón = 3; clavija de entrada para el pulsador del ratón
const int xAxis = A0; eje X del joystick
const int ejeY respectivamente = A1; eje de palanca de mando Y
const int ledPin = 5; LED de control del ratón
parámetros de lectura de la palanca de mando:
int rango = 12; gama de salida de X o Y movimiento
int responseDelay = 5; demora de respuesta del ratón, en ms
umbral de int = rango/4; umbral de reposo
int centro = rango/2; valor de la posición de descanso
Boolean mouseIsActive = false; controlar el ratón o no
int lastSwitchState = bajo; estado anterior del interruptor
void setup() {}
pinMode (switchPin, entrada); el pasador del interruptor
pinMode (ledPin, salida); el pin del LED
tomar el control del ratón:
Mouse.Begin();
}
void loop() {}
leer el interruptor:
switchState int = digitalRead(switchPin);
Si se cambia y es alto, cambiar el estado del ratón:
Si (switchState! = lastSwitchState) {}
Si (switchState == HIGH) {}
mouseIsActive =! mouseIsActive;
encender LED para indicar Estado de ratón:
digitalWrite (ledPin, mouseIsActive);
}
}
guardar el estado del interruptor para la siguiente comparación:
lastSwitchState = switchState;
leer y ampliar los dos ejes:
int xReading = readAxis(A0);
int yReading = readAxis(A1);
Si está activo el estado de control del ratón, mover el ratón:
Si (mouseIsActive) {}
Mouse.Move (xReading, yReading, 0);
}
leer el botón del ratón y haga clic en o no haga clic en:
Si se presiona el botón del ratón:
Si (digitalRead(mouseButton) == HIGH) {}
Si el ratón no está presionado, presione:
if (!. {Mouse.isPressed(MOUSE_LEFT))}
Mouse.Press(MOUSE_LEFT);
}
}
otra cosa no se presiona el botón del ratón:
Else {}
Si se pulsa el ratón, liberarlo:
Si (Mouse.isPressed(MOUSE_LEFT)) {}
Mouse.Release(MOUSE_LEFT);
}
}
Delay(responseDelay);
}
/*
Lee un eje (0 o 1 para x o y) y escalas de la
escala de entrada analógica a un rango de 0 a < rango >
*/
int readAxis (int thisAxis) {}
Lee la entrada analógica:
lectura de int = analogRead(thisAxis);
mapa de la lectura de la escala de entrada analógica a la gama de la salida:
lectura = mapa (lectura, 0, 1023, 0, rango);
Si la lectura de salida está fuera de la
umbral de la posición de descanso, utilizar:
int distancia = lectura - centro;
Si (abs(distance) < umbral) {}
distancia = 0;
}
de vuelta la distancia de este eje:
volver a distancia;
}