Étape 4: Le Code
Brancher votre arduino à votre ordinateur, lancez le programme arduino, puis copiez et collez ce code.Une brève explication :
Les potentionmeters nourrissent des valeurs à l’arduino basé sur leur position. Ces valeurs sont utilisées pour déterminer la vitesse et direction le curseur doit se déplacer. L’arduino puis envoyer ces informations à l’ordinateur. Lorsque le bouton est enfoncé, l’état de la broche numérique 2 valeur élevée et l’arduino envoyer une commande pour cliquer avec la souris à l’ordinateur.
De arduino.cc :
/*
JoystickMouseControl
Contrôle de la souris par une manette sur un Arduino Leonardo ou le Micro.
Utilise un bouton poussoir pour activer et désactiver le contrôle de la souris, et
un deuxième bouton cliquer sur le bouton gauche de la souris
Matériel :
* 2-axe manette connectée aux broches A0 et A1
* les boutons branchés pour épingler les D2 et D3
Le mouvement de la souris est toujours relatif. Ce dessin se lit
analog deux entrées qui vont de 0 à 1023 (ou moins à chaque extrémité)
et les traduit en gammes de 05:54.
L’esquisse suppose que les valeurs de repos joystick sont autour de la
milieu de gamme, mais qu’ils varient au sein d’un seuil.
AVERTISSEMENT : Lorsque vous utilisez la commande Mouse.move(), prend de l’Arduino
au cours de votre souris ! Assurez-vous que vous avez le contrôle avant d’exécuter la commande.
Ce croquis comprend un bouton de commande pour activer ou désactiver l’état de contrôle de la souris, alors
vous pouvez activer et désactiver le contrôle de la souris.
créé le 15 septembre 2011
mis à jour le 28 mars 2012
par Tom Igoe
Ce code se trouve dans le domaine public
*/
Définissez le NIP pour LED interrupteur et axes du joystick :
const int switchPin = 2 ; interrupteur pour activer et désactiver le contrôle de la souris
const int mouseButton = 3 ; broche d’entrée pour le bouton de la souris
const int xAxis = A0 ; axe de manette de jeu X
const int yAxis = A1 ; axe de manette de jeu Y
const int ledPin = 5 ; VOYANT de contrôle de la souris
paramètres pour la lecture de la manette :
gamme int = 12 ; gamme de sortie de X ou Y mouvement
int responseDelay = 5 ; délai de réponse de la souris, en ms
seuil d’int = rang/4 ; seuil de repos
Centre int = gamme/2 ; valeur de la position de repos
mouseIsActive booléen = false ; pour contrôler la souris ou non
int lastSwitchState = faible ; état antérieur de commutateur
void setup() {}
pinMode (switchPin, entrée) ; la tige de l’interrupteur
pinMode (ledPin, sortie) ; la broche de LED
Prenez le contrôle de la souris :
Mouse.Begin() ;
}
void loop() {}
lire l’interrupteur :
switchState int = digitalRead(switchPin) ;
Si elle est modifiée et il est élevé, activer/désactiver l’état de la souris :
Si (switchState! = lastSwitchState) {}
Si (switchState == HIGH) {}
mouseIsActive =! mouseIsActive ;
allumer LED pour indiquer l’état de la souris :
digitalWrite (ledPin, mouseIsActive) ;
}
}
enregistrer l’état de l’interrupteur pour la comparaison suivante :
lastSwitchState = switchState ;
lire et mettre à l’échelle des deux axes :
int xReading = readAxis(A0) ;
int yReading = readAxis(A1) ;
s’il active l’état de contrôle de la souris, déplacez la souris :
Si {(mouseIsActive)
Mouse.Move (xReading, yReading, 0) ;
}
lire le bouton de la souris et le clic ou le clic pas :
Si vous appuyez sur le bouton de la souris :
Si (digitalRead(mouseButton) == HIGH) {}
Si la souris n’est pas enfoncée, appuyez dessus :
if (!. {Mouse.isPressed(MOUSE_LEFT))}
Mouse.Press(MOUSE_LEFT) ;
}
}
sinon on n’est pas enfoncé le bouton de la souris :
else {}
Si la souris est enfoncée, relâcher :
Si (Mouse.isPressed(MOUSE_LEFT)) {}
Mouse.Release(MOUSE_LEFT) ;
}
}
Delay(responseDelay) ;
}
/*
lit un axe (0 ou 1 pour x ou y) et met à l’échelle du
gamme d’entrée analogique à une plage de 0 à < nombre >
*/
int readAxis (int thisAxis) {}
lire l’entrée analogique :
lecture int = analogRead(thisAxis) ;
Carte : la lecture de la plage d’entrées analogique de la gamme de sortie :
lecture = carte (lecture, 0, 1023, 0, rang) ;
Si la lecture de la sortie est en dehors de la
seuil de la position de repos, l’utiliser :
distance de l’int = lecture - center ;
Si (abs(distance) < seuil) {}
distance = 0 ;
}
le sentier fait de cet axe :
le sentier ;
}