Innehållsförteckning:
- Steg 1: Komponenter som behövs för inställning av knapp till vibrationsmotor
- Steg 2: Schema för inställning av knapp till vibrationsmotor
- Steg 3: Inställning av knapp till inställning av vibrationsmotor
- Steg 4: Koden
- Steg 5: Video med inställning av knapp till vibrationsmotor
- Steg 6: Prototyp av Glove Extendable
- Steg 7: Kod för flera knappar med unik vibrationsutgång
Video: En tillämpning av en utdragbar knapp med vibrationsåterkoppling: 7 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:43
I denna handledning kommer vi först att visa dig hur du använder en Arduino Uno för att styra en vibrationsmotor via en förlängd knapp. De flesta självstudier om tryckknappar involverar knappen på det fysiska brödbrädet, medan i den här självstudien har knappen ändrats för att anslutas till brödbrädan via bygelkablar istället. Med den här knappen kan du styra motorns styrka och vibrationsmönster. Efter det kommer vi att visa en möjlig prototyp av en bärbar teknik som använder denna konfiguration. Denna bärbara är en handske med utdragbara fingertoppar med knappar fästa vid änden, programmerad för att ge unika vibrationsåterkopplingar till bäraren baserat på den specifika tryckta knappen.
Steg 1: Komponenter som behövs för inställning av knapp till vibrationsmotor
- Arduino Uno
- Bakbord
- Myntvibratorvibrationsmotor
- Grove -knapp
- Man-till-man-bygelkablar (x10)
- Jumper Wire 4 Pin
- Haptic motorförare
- Man-till-hona kantkontakt
- Lödkolv
Steg 2: Schema för inställning av knapp till vibrationsmotor
Föregående diagram skapades med Fritzing.org.
Steg 3: Inställning av knapp till inställning av vibrationsmotor
Steg 1: Löd kantkontakten till vibrationsmotordrivrutinen. Löd myntvibratorns trådar i terminalerna på vibrationsmotordrivrutinen.
Steg 2: Anslut den 4 -poliga bygelkabeln till knappbrytningen.
Steg 3: Anslut GRD -stiftet på Arduino med en av bygelstrådarna till en rad på brödbrädet.
Steg 4: Använd en annan bygelkabel, anslut Volt 3.3 -stiftet på Arduino till en annan rad på brödbrädet.
Steg 5: Nu ansluter vi vibrationsmotordrivrutinen till Arduino. Använd en tredje bygelkabel, anslut GND -stiftet på vibrationsmotordrivrutinen till samma rad på brödbrädet som GRD -stiftet från Arduino. Gör samma sak med en annan kabel för VCC (volt) på vibrationsmotordrivrutinen, till raden volt på brödbrädet.
Steg 6: Använd ännu en tråd för att ansluta SDA -stiftet på vibrationsmotordrivrutinen till SDA -stiftet direkt på Arduino. Återigen, gör samma sak med SCL -stiften på båda. Alternativt kan du följa ett liknande tillvägagångssätt för steg 5 och anslut SDA- och SCL -stiften på Arduino till sina egna rader på brödbrädet via bygelkablar. Dra sedan en tråd från raden där SDA -stiftet är anslutet på brödbrädet till SDA -stiftet på motordrivrutinen. Gör samma sak för SCL -raden på brödbrädan till SCL -stiftet på motorföraren.
Steg 7: Nu avslutar vi med att ansluta knappen till vibrationsmotordrivrutinen och Arduino. Använd en annan bygelkabel för att ansluta GRD från den 4 -poliga bygelkabeln som är ansluten till knappbrytningen till samma rad som de andra GRD -trådarna på brödbrädet. Gör samma sak med volt igen (VCC).
Steg 8: Anslut en sista skrivning från SIG på knapputbrottet till en stift på Arduino (för vår kod använde vi stift 7).
Steg 9: Anslut Arduino och ladda upp koden och se hur den fungerar!
Steg 4: Koden
Knapp-vibrationsmotor. C
/ * Kod anpassad från https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide?_ga=2.227031901.1514248658.1513372975-1149214600.1512613196 */ |
#omfatta |
#omfatta |
SFE_HMD_DRV2605L HMD; // Skapa haptiskt motordrivrutinobjekt |
int -knapp = 7; // välj ingångsstift 7 för tryckknapp |
int button_val = 0; // variabel för att läsa pin -status |
voidsetup () |
{ |
/ * Initiera Haptic Motor Driver Object */ |
HMD.begin (); |
Serial.begin (9600); |
HMD. Mode (0); // Internt utlösarinmatningsläge - Måste använda GO () -funktionen för att utlösa uppspelning. |
HMD. MotorSelect (0x36); // ERM -motor, 4x bromsning, medelhög slingförstärkning, 1.365x tillbaka EMF -förstärkning |
HMD. Library (2); // 1-5 & 7 för ERM-motorer, 6 för LRA-motorer |
} |
voidloop () |
{ |
/ * Starta vibrationsmotorn */ |
HMD.go (); |
button_val = digitalRead (knapp); |
if (button_val == HIGH) { |
/* Denna utmatning för att logga den knappen har tryckts, använd för debugginh*/ |
Serial.println ("Knapp intryckt."); |
/ * Vågformsbiblioteket har 0-122 olika typer av vågor */ |
HMD. Waveform (0, 69);} |
annan{ |
/ * Om knappen inte trycks in, stoppa vibrationsmotorn */ |
HMD.stop (); |
} |
} |
visa rawButton-Vibration-Motor.c värd med ❤ av GitHub
Steg 5: Video med inställning av knapp till vibrationsmotor
Steg 6: Prototyp av Glove Extendable
En möjlig tillämpning av knappen på vibrationsmotorn är handsken som visas ovan. Vi har modifierat billigt tillgängliga material som sprutor för att göra utdragbara "fingertoppar". Vi fäst lundknapparna i slutet av de modifierade sprutorna med kardborreband, skar hål i fingertopparna på en handske och placerade varje spruta genom hålen. Knapparnas 4 -stifts bygelstrådar är gängade genom sprutor och är tillräckligt långa för att du ska kunna förlänga sprutor till sin fulla längd. Arduino och brödbräda är fästa via kardborrband på toppen av handsken, vilket gör att knapparnas trådar enkelt kan anslutas genom en liten slits på basen av varje fingertopp. Motordrivrutinen är fäst vid handskens undersida vid öppningen för att hålla vibrationsmotorn på insidan av handsken. När bäraren har handsken på sitter vibrationsmotorn på undersidan av bärarens handled. När bäraren vidrör en yta och trycker ned en av knapparna, ges en unik återkopplingsvibration genom motorn.
Tankeprocessen bakom en sådan handske skulle vara att låta någon som bär den "röra" saker utanför sina vanliga fingertoppar och få feedback om att de rör vid dessa ytor. Vibrationsåterkopplingen ändras beroende på vilket finger som rör vid ytan, så att det är möjligt för användaren att berätta vilket finger som rör vid ytan baserat på vibrationsmönstret.
Det finns många sätt att ta prototypen vidare, till exempel att göra fingrarna mer utdragbara eller att ändra feedbacken baserat på typen av yta som berörs. Helst skulle förlängningsbara fingrar skapas via 3D -utskrift, för bättre teleskopalternativ. En temperatursensor kan användas istället för knapparna för att ge feedback om hur het ytan användaren vidrör eller en fuktsensor för liknande ändamål. Ett sätt att känna hur långt "fingret" har förlängts kan genomföras, så att användaren kan veta hur långt bort föremålet de rör vid är. Detta är bara några möjliga alternativ för att ta denna prototyp vidare.
Denna handske kan tillverkas med vanliga material som ett enkelt sätt att utöka dina sinnen och skapa feedback som användaren kan känna och förstå.
Steg 7: Kod för flera knappar med unik vibrationsutgång
mutliple_buttons_to_vibmotor.ino
/ * Kod anpassad från SparkFun https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide */ |
#omfatta |
#omfatta |
SFE_HMD_DRV2605L HMD; // Skapa haptiskt motordrivrutinobjekt |
int button_middle = 7; |
int button_index = 5; // välj inmatningsstift för tryckknapp |
int button_ring = 9; |
int button_pinky = 3; |
voidsetup () |
{ |
HMD.begin (); |
Serial.begin (9600); |
HMD. Mode (0); // Internt utlösarinmatningsläge - Måste använda GO () -funktionen för att utlösa uppspelning. |
HMD. MotorSelect (0x36); // ERM -motor, 4x bromsning, medelhög slingförstärkning, 1,365x tillbaka EMF -förstärkning |
HMD. Library (2); // 1-5 & 7 för ERM-motorer, 6 för LRA-motorer |
} |
voidloop () |
{ |
HMD.go (); // starta vibrationsmotorn |
/ * Kontrollera vilken knapp som trycks in och mata ut vågform 0-122 */ |
if (digitalRead (button_middle) == HIGH) { |
Serial.println ("Knapp intryckt."); |
HMD. Waveform (0, 112);} |
elseif (digitalRead (button_index) == HIGH) { |
HMD. Waveform (0, 20); |
} |
elseif (digitalRead (button_ring) == HIGH) { |
HMD. Waveform (0, 80); |
} |
elseif (digitalRead (button_pinky) == HIGH) { |
HMD. Waveform (0, 100); |
} |
/ * Om ingen knapp trycks in stoppar du */ |
annan{ |
HMD.stop (); |
} |
} |
visa rawmutliple_buttons_to_vibmotor.ino värd med ❤ av GitHub
Rekommenderad:
Tillämpning av MCP-23008 med relägränssnitt (I2C) :: 6 steg
Tillämpning av MCP-23008 Användning av relägränssnitt (I2C) :: HelloGood Hälsningar .. !! Jag (Somanshu Choudhary) på uppdrag av Dcube tech-satsningar som kommer att styra reläer via I2C-protokoll med Arduino nano och MCP23008
RGB USB -tangentbord med en knapp: 6 steg (med bilder)
RGB USB -tangentbord med en knapp: Har du någonsin känt att du behöver ha ett litet, men funktionellt, RGB -bakgrundsbelyst tangentbord, inte större än storleken på en enda nyckel? Nej? Vem bryr sig, gör en i alla fall! Den här instruerbara guiden guidar dig igenom stegen du behöver för att göra din egen, lite värdelösa, på
Kapacitiv utdragbar pekare: 4 steg
Kapacitiv utdragbar pekare: Kapacitiv beröringsteknik är mycket vanlig idag, särskilt i köksmiljö. För personer med en mindre statur eller begränsad räckvidd kan det vara svårt att komma åt kontrollerna till denna teknik. Konventionella förlängningspekare fungerar inte eftersom
Utdragbar handhållen Gimbal för GoPro/SJ4000/Xiaomi Yi/iLook: 9 steg (med bilder)
Utdragbar handhållen Gimbal för GoPro/SJ4000/Xiaomi Yi/iLook: Denna handledning guidar dig hur du hackar en selfiepinne och en 2D Gimbal för att göra en utdragbar handhållen gimbal som kan montera kameror som GoPro SJ4000/5000/6000 Xiaomi Yi Walkera iLook. En Gimbal är en stabiliseringsmekanism som
Behärska din mikro: bit med Arduino IDE-knapp och annan GPIO: 3 steg (med bilder)
Behärska din mikro: bit Med Arduino IDE-Button och annan GPIO: I vår tidigare blogg Master Your Micro: bit med Arduino IDE - - Light LED, vi har pratat om hur man installerar micro: bit bibliotek på Arduino IDE och hur för att driva LED på micro: bit med Arduino IDE. I den här artikeln kommer vi att berätta för dig