Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Många studier tyder på att hållningen för att använda en konventionell datormus kan vara farlig. Musen är en standard datorutrustning. Datoranvändare använder musen nästan tre gånger så mycket som tangentbordet. Eftersom exponeringsfrekvensen är hög är det mycket viktigt att förbättra hållningen i övre extremiteterna när du använder en datormus.
För detta abstrakta projekt kommer vi att göra en bärbar som gör att människor kan röra sig genom en datorskärm utan att det behövs extern teknik. På så sätt kan vi använda händerna naturliga rörelser istället för att klicka på en enhet på en horisontell yta. Detta gör det också möjligt att använda skärmar medan du står, vilket gör muntliga presentationer trevligare.
När det gäller prototypen kommer indexet att användas som en joystick, långfingret för vänsterklicka, ringfingret för högerklickning och pinky för att slå på och av enheten. Tummen fungerar som ytan där knapparna trycks in. Allt detta kommer att läggas till i en handske.
Tillbehör
- (x1) Arduino Leonardo
- (x1) Protoboard
- (x1) Joystick -modul
- (x3) Tryckknapp
- (x20 ±) Trådhoppare
- (x3) Resistorer på 1KΩ
- (x1) Syskit för handskar
- Kardborreband varm silikon
- Trådlödningssats
- 3D -tryckt del
Steg 1: Konfigurera hårdvaran
Vi har inkluderat en Fritzing -skiss för en bättre förståelse av designen. Vi rekommenderar att du monterar komponenterna på ett protoboard först. På så sätt kan du kontrollera att allt fungerar innan lödning.
Steg 2: Ladda upp koden och testa
När anslutningarna har gjorts ansluter du USB A (M) till micro USB B (M) från datorn till Arduino Leonardo och laddar upp skissen. Kopiera, modifiera och förbättra gärna skissen.
VARNING: När du använder kommandot Mouse.move () tar Arduino över musen! Se till att du har kontroll innan du använder kommandot. Det fungerar bara för Arduino Leonardo, Micro eller Due
Här är vår kod för detta projekt:
// Definiera Pins#inkluderar; const int mouseMiddleButton = 2; // inmatningsstift för musens mellersta knapp const int startEmulation = 3; // växla för att slå på och av musemulering const int mouseLeftButton = 4; // inmatningsstift för musen vänster Knapp const int mouseRightButton = 5; // inmatningsstift för musens höger Knapp const int joystickX = A1; // joystick X -axel const int joystickY = A0; // joystick Y -axel
// parametrar för att läsa joysticken:
int cursorSpeed = 10; // utmatningshastighet för X eller Y -rörelse int responseDelay = 5; // svarsfördröjning för musen, i ms int tröskel = cursorSpeed / 4; // vilotröskel int center = cursorSpeed / 2; // vilolägesvärde int mouseMiddleState = 0;
booleska mouseIsActive = false; // om man ska styra musen
int lastSwitchState = LÅG; // föregående switchläge
void setup () {
pinMode (startEmulation, INPUT); // switch pin pinMode (mouseMiddleButton, INPUT); // den mellersta musknappen pin pinMode (mouseLeftButton, INPUT); // vänster musknapp pin pinMode (mouseRightButton, INPUT); // höger musknapp
Mouse.begin (); // ta kontroll över musen
}
void loop () {
// läs switch: int switchState = digitalRead (startEmulation);
// om det har ändrats och det är högt, växla musläget:
if (switchState! = lastSwitchState) {if (switchState == LOW) {mouseIsActive =! mouseIsActive; }}
// spara switch -tillstånd för nästa loop:
lastSwitchState = switchState;
// läs och skala de två axlarna:
int xReading = readAxis (A1); int yReading = readAxis (A0);
// om musens kontrollläge är aktivt, flytta musen:
if (mouseIsActive) {Mouse.move (xReading, yReading, 0); // (x, y, rulla mushjul)}
//VÄNSTER
// läs musknappen och klicka eller klicka inte: // om musknappen trycks in: if (digitalRead (mouseLeftButton) == HIGH) {// om musen inte trycks in, tryck på den: if (! Mouse.isPressed (MOUSE_LEFT)) {Mouse.press (MOUSE_LEFT); fördröjning (100); // fördröjning för att aktivera enkel- och dubbelklicka på Mouse.release (MOUSE_LEFT); }}
// annars trycks inte musknappen:
annars {// om musen trycks in, släpp den: if (Mouse.isPressed (MOUSE_LEFT)) {Mouse.release (MOUSE_LEFT); }}
//HÖGER
// läs musknappen och klicka eller klicka inte: // om musknappen trycks ned: if (digitalRead (mouseRightButton) == HIGH) {// om musen inte trycks in, tryck på den: if (! Mouse.isPressed (MOUSE_RIGHT)) {Mouse.press (MOUSE_RIGHT); fördröjning (100); // fördröjning för att aktivera enkel- och dubbelklicka på Mouse.release (MOUSE_RIGHT); }}
// annars trycks inte musknappen:
annars {// om musen trycks in, släpp den: if (Mouse.isPressed (MOUSE_RIGHT)) {Mouse.release (MOUSE_RIGHT); }}
//MITTEN
// läs musknappen och klicka eller inte klicka: // om musknappen trycks in: if (digitalRead (mouseMiddleButton) == HIGH) {// om musen inte trycks in, tryck på den: if (! Mouse.isPressed (MOUSE_MIDDLE) && mouseMiddleState == 0) {Mouse.press (MOUSE_MIDDLE); mouseMiddleState = 1; // actualiza el estado del botón}}
// annars trycks inte musknappen:
annars {// om musen trycks in, släpp den: if (Mouse.isPressed (MOUSE_MIDDLE) && mouseMiddleState == 1) {Mouse.release (MOUSE_MIDDLE); mouseMiddleState = 0; }}
delay (responseDelay);
}
/*
läser en axel (0 eller 1 för x eller y) och skalar det analoga ingångsområdet till ett område från 0 till */
int readAxis (int thisAxis) {
// läs den analoga ingången: int reading = analogRead (thisAxis);
// mappa avläsningen från det analoga ingångsområdet till utgångsområdet:
läsning = karta (läsning, 0, 1023, 0, markörhastighet);
// om utmatningsavläsningen är utanför från
// vilopositionströskel, använd den: int distans = läs - centrum;
if (abs (avstånd) <tröskel) {distans = 0; }
// returnera avståndet för denna axel:
returavstånd; }
Steg 3: Montering av prototypen
Det första steget är att sy kardborrbandet i handsken, du måste sy fyra kardborrband ett till varje finger. Vi sydde den mjuka delen av kardborren.
Varje tryckknapp har två trådar, en som börjar vid respektive stift och ansluter till det positiva benet på knappen och en till på det negativa benet. I den andra änden av den negativa tråden löder vi motstånden för varje knapp plus den negativa tråden i joysticken till en sista tråd, som ansluts till Arduino -kortets GND. Samma parallella anslutning fungerar för den positiva sidan. (3 knappar och joystick positivt ben)
Efter lödning av hopparna sätter vi på de hårda kardborrebanden så att trådarna fastnar emellan. Slutligen termolimmade vi joystickmodulen till en 3D-tryckt bit. Nedan hittar du. STL -filen.
Steg 4: Börja använda handen som mus
Rösta på oss i Assistive Tech Contest om du gillade projektet.