Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
De nombreuses études suggèrent que la posture d'utilisation d'une souris d'ordinateur conventionnelle peut être dangereuse. La souris est un équipement informatique standard. Les utilisateurs d'ordinateurs utilisent la souris presque trois fois plus que le clavier. Comme les taux d'exposition sont élevés, il est très important d'améliorer la posture des membres supérieurs lors de l'utilisation d'une souris d'ordinateur.
Pour ce projet abstrait, nous allons créer un appareil portable qui permet aux gens de se déplacer sur un écran d'ordinateur sans avoir recours à une technologie externe. De cette façon, nous pourrions utiliser les mouvements naturels des mains au lieu de cliquer sur un appareil sur une surface horizontale. Cela permet également d'utiliser des écrans en position debout, rendant les présentations orales plus agréables.
Quant au prototype, il utilisera l'index comme joystick, le majeur pour le clic gauche, l'annulaire pour le clic droit et le petit doigt pour allumer et éteindre l'appareil. Le pouce agira comme la surface sur laquelle les boutons seront pressés. Tout cela sera ajouté dans un gant.
Fournitures
- (x1) Arduino Leonardo
- (x1) Protoboard
- (x1) Module de manette
- (x3) Bouton poussoir
- (x20±) Cavaliers de fil
- (x3)Résistances de 1KΩ
- (x1) Kit de couture de gants
- Velcro Silicone chaud
- Kit de soudure au fil
- pièce imprimée en 3D
Étape 1: Configurer le matériel
Nous avons inclus un croquis Fritzing pour une meilleure compréhension de la conception. Nous vous recommandons de monter les composants sur un protoboard en premier. De cette façon, vous pouvez vérifier que tout fonctionne avant de souder.
Étape 2: Télécharger le code et tester
Une fois les connexions effectuées, connectez l'USB A (M) au micro USB B (M) de l'ordinateur à l'Arduino Leonardo et téléchargez le croquis. N'hésitez pas à copier, modifier et améliorer le croquis.
ATTENTION: lorsque vous utilisez la commande Mouse.move(), l'Arduino prend le relais de votre souris ! Assurez-vous d'avoir le contrôle avant d'utiliser la commande. Cela ne fonctionne que pour Arduino Leonardo, Micro ou Due
Voici notre code pour ce projet:
// Définir les épingles#include; const int mouseMiddleButton = 2; // broche d'entrée pour le bouton central de la souris const int startEmulation = 3; // basculer pour activer et désactiver l'émulation de souris const int mouseLeftButton = 4; // pin d'entrée pour le bouton gauche de la souris const int mouseRightButton = 5; // pin d'entrée pour la souris right Button const int joystickX = A1; // joystick axe X const int joystickY = A0; // joystick axe Y
// paramètres de lecture du joystick:
int curseurVitesse = 10; // vitesse de sortie du mouvement X ou Y int responseDelay = 5; // délai de réponse de la souris, en ms int seuil = cursorSpeed / 4; // seuil de repos int center = curseurVitesse / 2; // valeur de position de repos int mouseMiddleState = 0;
booléen mouseIsActive = false; // contrôler ou non la souris
int lastSwitchState = LOW; // état précédent du commutateur
void setup() {
pinMode(startEmulation, INPUT); // la broche de commutation pinMode(mouseMiddleButton, INPUT); // la broche du bouton central de la souris pinMode(mouseLeftButton, INPUT); // la broche du bouton gauche de la souris pinMode(mouseRightButton, INPUT); // la broche du bouton droit de la souris
Souris.begin(); // prend le contrôle de la souris
}
boucle vide() {
// lit le commutateur: int switchState = digitalRead(startEmulation);
// s'il est modifié et qu'il est élevé, basculez l'état de la souris:
if (switchState != lastSwitchState) { if (switchState == LOW) { mouseIsActive = !mouseIsActive; } }
// enregistre l'état du commutateur pour la prochaine boucle:
lastSwitchState = switchState;
// lecture et mise à l'échelle des deux axes:
int xLecture = readAxis(A1); int yLecture = readAxis(A0);
// si l'état du contrôle de la souris est actif, déplacez la souris:
if (mouseIsActive) { Mouse.move(xReading, yReading, 0); // (x, y, faire défiler la molette de la souris) }
//LA GAUCHE
// lit le bouton de la souris et clique ou non: // si le bouton de la souris est enfoncé: if (digitalRead(mouseLeftButton) == HIGH) { // si la souris n'est pas enfoncée, appuyez dessus: if (!Mouse.isPressed (MOUSE_LEFT)) { Mouse.press(MOUSE_LEFT); retard (100); // délai pour activer les clics simples et doubles Mouse.release(MOUSE_LEFT); } }
// sinon le bouton de la souris n'est pas enfoncé:
else { // si la souris est enfoncée, relâchez-la: if (Mouse.isPressed(MOUSE_LEFT)) { Mouse.release(MOUSE_LEFT); } }
//DROIT
// lire le bouton de la souris et cliquer ou non cliquer: // si le bouton de la souris est enfoncé: if (digitalRead(mouseRightButton) == HIGH) { // si la souris n'est pas enfoncée, appuyez dessus: if (!Mouse.isPressed (MOUSE_RIGHT)) { Mouse.press(MOUSE_RIGHT); retard (100); // délai pour activer les clics simples et doubles Mouse.release(MOUSE_RIGHT); } }
// sinon le bouton de la souris n'est pas enfoncé:
else { // si la souris est enfoncée, relâchez-la: if (Mouse.isPressed(MOUSE_RIGHT)) { Mouse.release(MOUSE_RIGHT); } }
//MILIEU
// lire le bouton de la souris et cliquer ou non cliquer: // si le bouton de la souris est enfoncé: if (digitalRead(mouseMiddleButton) == HIGH) { // si la souris n'est pas enfoncée, appuyez dessus: if (!Mouse.isPressed (MOUSE_MIDDLE) && mouseMiddleState == 0) { Mouse.press(MOUSE_MIDDLE); mouseMiddleState = 1; //actualiza el estado del botón } }
// sinon le bouton de la souris n'est pas enfoncé:
else { // si la souris est enfoncée, relâchez-la: if (Mouse.isPressed(MOUSE_MIDDLE) && mouseMiddleState == 1) { Mouse.release(MOUSE_MIDDLE); mouseMiddleState = 0; } }
délai(réponseDélai);
}
/*
lit un axe (0 ou 1 pour x ou y) et met à l'échelle la plage d'entrée analogique dans une plage de 0 à */
int readAxis(int thisAxis) {
// lit l'entrée analogique: int lecture = analogRead(thisAxis);
// mappe la lecture de la plage d'entrée analogique à la plage de sortie:
lecture = carte(lecture, 0, 1023, 0, curseurVitesse);
// si la lecture de sortie est en dehors de la
// seuil de position de repos, utilisez-le: int distance = lecture - centre;
if (abs(distance) < seuil) { distance = 0; }
// renvoie la distance pour cet axe:
distance de retour; }
Étape 3: Montage du prototype
La première étape consiste à coudre le velcro au gant, vous devez coudre quatre bandes de velcro une à chaque doigt. Nous avons cousu la partie douce du velcro.
Chaque bouton-poussoir a deux fils, un qui part des broches respectives et se connecte à la branche positive du bouton et un autre à la branche négative. A l'autre extrémité du fil négatif, nous soudons les résistances de chaque bouton plus le fil négatif du joystick à un dernier fil, qui se connecte au GND de la carte Arduino. La même connexion parallèle fonctionne pour le côté positif. (3 boutons et joystick jambe positive)
Après avoir soudé les cavaliers, nous mettrons les bandes velcro dures, de sorte que les fils se coincent entre les deux. Enfin, nous avons thermocollé le module joystick sur une pièce imprimée en 3D. Vous trouverez ci-dessous le fichier. STL.
Étape 4: commencez à utiliser votre main comme une souris
Votez pour nous dans le concours Assistive Tech si vous avez apprécié le projet.