Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Viele Studien deuten darauf hin, dass die Haltung einer herkömmlichen Computermaus gefährlich sein kann. Die Maus ist eine Standard-Computerausrüstung. Computerbenutzer verwenden die Maus fast dreimal so oft wie die Tastatur. Da die Expositionsraten hoch sind, ist es sehr wichtig, die Haltung der oberen Extremitäten bei der Verwendung einer Computermaus zu verbessern.
Für dieses abstrakte Projekt werden wir ein Wearable herstellen, das es Menschen ermöglicht, sich ohne externe Technologie durch einen Computerbildschirm zu bewegen. Auf diese Weise konnten wir die natürlichen Bewegungen der Hände nutzen, anstatt ein Gerät auf einer horizontalen Fläche anzuklicken. Dies ermöglicht auch die Nutzung von Bildschirmen im Stehen, was mündliche Präsentationen angenehmer macht.
Beim Prototyp wird der Zeigefinger als Joystick verwendet, der Mittelfinger zum Linksklick, der Ringfinger zum Rechtsklick und der kleine Finger zum Ein- und Ausschalten des Geräts. Der Daumen dient als Oberfläche, auf der die Tasten gedrückt werden. All dies wird in einen Handschuh aufgenommen.
Lieferungen
- (x1) Arduino Leonardo
- (x1) Protoboard
- (x1) Joystick-Modul
- (x3) Drucktaste
- (x20±) Drahtbrücken
- (x3)Widerstände von 1KΩ
- (x1) Handschuh-Nähset
- Klettverschluss Heißes Silikon
- Drahtlötset
- 3D gedrucktes Teil
Schritt 1: Einrichten der Hardware
Zum besseren Verständnis des Designs haben wir eine Fritzing-Skizze beigefügt. Wir empfehlen, die Komponenten zuerst auf einem Protoboard zu montieren. Auf diese Weise können Sie vor dem Löten überprüfen, ob alles funktioniert.
Schritt 2: Laden Sie den Code hoch und testen Sie
Sobald die Verbindungen hergestellt sind, verbinden Sie den USB A (M) mit dem Micro USB B (M) vom Computer zum Arduino Leonardo und laden Sie die Skizze hoch. Fühlen Sie sich frei, die Skizze zu kopieren, zu ändern und zu verbessern.
WARNUNG: Wenn Sie den Befehl Mouse.move() verwenden, übernimmt das Arduino Ihre Maus! Stellen Sie sicher, dass Sie die Kontrolle haben, bevor Sie den Befehl verwenden. Es funktioniert nur für Arduino Leonardo, Micro oder Due
Hier ist unser Code für dieses Projekt:
// Pins definieren#include; const int mouseMiddleButton = 2; // Eingabestift für die mittlere Maustaste const int startEmulation = 3; // Schalter zum Ein- und Ausschalten der Mausemulation const int mouseLeftButton = 4; // Eingabestift für die linke Maustaste const int mouseRightButton = 5; // Eingabestift für die rechte Maustaste const int joystickX = A1; // Joystick X-Achse const int joystickY = A0; // Joystick Y-Achse
// Parameter zum Lesen des Joysticks:
int CursorGeschwindigkeit = 10; // Ausgabegeschwindigkeit der X- oder Y-Bewegung Int responseDelay = 5; // Reaktionsverzögerung der Maus in ms int threshold = cursorSpeed / 4; // Ruheschwelle int center = cursorSpeed / 2; // Ruhepositionswert Int mouseMiddleState = 0;
boolean mouseIsActive = false; // ob die Maus gesteuert werden soll oder nicht
int lastSwitchState = LOW; // vorheriger Schaltzustand
Leere Einrichtung () {
pinMode (startEmulation, INPUT); // der Schaltstift PinMode (mouseMiddleButton, INPUT); // der mittlere Maustastenstift PinMode (mouseLeftButton, INPUT); // der linke Maustastenstift PinMode (mouseRightButton, INPUT); // der rechte Maustastenstift
Maus.begin(); // übernimm die Kontrolle über die Maus
}
Leere Schleife () {
// den Schalter lesen: Int switchState = digitalRead (startEmulation);
// Wenn es geändert wurde und hoch ist, schalten Sie den Mausstatus um:
if (switchState != lastSwitchState) { if (switchState == LOW) { mouseIsActive = !mouseIsActive; } }
// Schalterzustand für nächste Schleife speichern:
lastSwitchState = switchState;
// die beiden Achsen lesen und skalieren:
int xReading = readAxis(A1); int yReading = readAxis(A0);
// Wenn der Status der Maussteuerung aktiv ist, bewegen Sie die Maus:
if (mouseIsActive) { Mouse.move (xReading, yReading, 0); // (x, y, Mausrad scrollen) }
//LINKS
// die Maustaste lesen und klicken oder nicht klicken: // wenn die Maustaste gedrückt ist: if (digitalRead(mouseLeftButton) == HIGH) { // wenn die Maus nicht gedrückt ist, drücken Sie sie: if (!Mouse.isPressed (MOUSE_LEFT)) { Mouse.press (MOUSE_LEFT); Verzögerung (100); // Verzögerung zum Aktivieren von Einzel- und Doppelklick Mouse.release(MOUSE_LEFT); } }
// sonst ist die Maustaste nicht gedrückt:
else { // Wenn die Maus gedrückt wird, lassen Sie sie los: if (Mouse.isPressed(MOUSE_LEFT)) { Mouse.release(MOUSE_LEFT); } }
//RECHTS
// die Maustaste lesen und klicken oder nicht klicken: // wenn die Maustaste gedrückt ist: if (digitalRead(mouseRightButton) == HIGH) { // wenn die Maus nicht gedrückt ist, drücken Sie sie: if (!Mouse.isPressed (MOUSE_RIGHT)) { Mouse.press (MOUSE_RIGHT); Verzögerung (100); // Verzögerung zum Aktivieren von Einzel- und Doppelklick Mouse.release(MOUSE_RIGHT); } }
// sonst ist die Maustaste nicht gedrückt:
else { // Wenn die Maus gedrückt wird, lassen Sie sie los: if (Mouse.isPressed(MOUSE_RIGHT)) { Mouse.release(MOUSE_RIGHT); } }
//MITTE
// die Maustaste lesen und klicken oder nicht klicken: // wenn die Maustaste gedrückt ist: if (digitalRead(mouseMiddleButton) == HIGH) { // wenn die Maus nicht gedrückt ist, drücken Sie sie: if (!Mouse.isPressed (MOUSE_MIDDLE) && mouseMiddleState == 0) { Mouse.press (MOUSE_MIDDLE); MausMiddleState = 1; //aktualiza el estado del botón}}
// sonst ist die Maustaste nicht gedrückt:
else { // Wenn die Maus gedrückt wird, lassen Sie sie los: if (Mouse.isPressed(MOUSE_MIDDLE) && mouseMiddleState == 1) { Mouse.release(MOUSE_MIDDLE); mouseMiddleState = 0; } }
Verzögerung (AntwortVerzögerung);
}
/*
liest eine Achse (0 oder 1 für x oder y) und skaliert den analogen Eingangsbereich auf einen Bereich von 0 bis */
int readAxis (int thisAxis) {
// den analogen Eingang lesen: Int Reading = analogRead (thisAxis);
// den Messwert vom analogen Eingangsbereich auf den Ausgangsbereich abbilden:
Lesen = Karte (Lesen, 0, 1023, 0, CursorSpeed);
// wenn der Ausgabewert außerhalb des liegt
// Ruhepositionsschwellenwert, verwenden Sie ihn: Int Distance = Reading - Center;
Wenn (abs(Abstand) < Schwellenwert) {Abstand = 0; }
// den Abstand für diese Achse zurückgeben:
Rückweg; }
Schritt 3: Montage des Prototyps
Der erste Schritt ist das Annähen des Klettverschlusses an den Handschuh, Sie müssen vier Klettstreifen an jeden Finger nähen. Wir haben den weichen Teil des Klettverschlusses genäht.
Jeder Druckknopf hat zwei Drähte, einen, der an den jeweiligen Stiften beginnt und mit dem positiven Bein des Knopfes und einem anderen mit dem negativen Bein verbunden ist. Am anderen Ende des negativen Drahtes löten wir die Widerstände jeder Taste plus den negativen Draht des Joysticks an einen letzten Draht, der mit dem GND des Arduino-Boards verbunden ist. Die gleiche Parallelschaltung funktioniert für die positive Seite. (3 Tasten und Joystick positives Bein)
Nach dem Löten der Jumper werden die harten Klettbänder angezogen, so dass die Drähte dazwischen stecken bleiben. Zuletzt haben wir das Joystick-Modul auf ein 3D-gedrucktes Stück thermogeklebt. Unten finden Sie die. STL-Datei.
Schritt 4: Verwenden Sie Ihre Hand als Maus
Stimmen Sie für uns im Assistive Tech Contest, wenn Ihnen das Projekt gefallen hat.