Indholdsfortegnelse:

En anvendelse af en udvidelig knap med vibrationsfeedback: 7 trin (med billeder)
En anvendelse af en udvidelig knap med vibrationsfeedback: 7 trin (med billeder)

Video: En anvendelse af en udvidelig knap med vibrationsfeedback: 7 trin (med billeder)

Video: En anvendelse af en udvidelig knap med vibrationsfeedback: 7 trin (med billeder)
Video: Vandhjul og mølleværk 2024, Juli
Anonim
En applikation af en udvidelig knap med vibrationsfeedback
En applikation af en udvidelig knap med vibrationsfeedback
En applikation af en udvidelig knap med vibrationsfeedback
En applikation af en udvidelig knap med vibrationsfeedback

I denne vejledning vil vi først vise dig, hvordan du bruger en Arduino Uno til at styre en vibrationsmotor via en forlænget knap. De fleste øvelser om trykknapper involverer knappen på det fysiske brødbræt, mens knappen i denne vejledning er blevet ændret til at blive forbundet til brødbrættet via jumperkabler i stedet. Denne knap giver dig mulighed for at kontrollere motorens styrke og vibrationsmønster. Herefter vil vi vise en mulig prototype af en bærbar teknologi, der gør brug af denne opsætning. Denne bærbare er en handske med forlængelige fingerspidser med knapper fastgjort til enden, programmeret til at give enestående vibrationsfeedback til brugeren baseret på den specifikke knap, der skubbes.

Trin 1: Komponenter påkrævet til opsætning af knap til vibrationsmotor

Komponenter påkrævet til opsætning af knap til vibrationsmotor
Komponenter påkrævet til opsætning af knap til vibrationsmotor
  • Arduino Uno
  • Brødbræt
  • Coin Vibrator Vibration Motor
  • Grove -knap
  • Mand-til-mand jumperwire (x10)
  • Jumper Wire 4 Pin
  • Haptic motor driver
  • Mand-til-hun-kantstik
  • Loddekolbe

Trin 2: Skemaer for opsætning af knap til vibrationsmotor

Skemaer for opsætning af knap til vibrationsmotor
Skemaer for opsætning af knap til vibrationsmotor

Det foregående diagram blev oprettet med Fritzing.org.

Trin 3: Opsætning af knap til vibrationsmotoropsætning

Trin 1: Loddet kantstikket til vibrationsmotordriveren. Lod lodtrådene på møntvibratoren ind i terminalerne på vibrationsmotordriveren.

Trin 2: Tilslut 4 -polet jumperkabel til knapbrud.

Trin 3: Brug en af jumpertrådene til at slutte GRD -stiften på Arduino til en række på brødbrættet.

Trin 4: Tilslut Volt 3.3 -stiften på Arduino til en anden række på brødbrættet ved hjælp af en anden jumper wire.

Trin 5: Nu vil vi forbinde vibrationsmotordriveren til Arduino. Brug en tredje jumper wire, tilslut GND -stiften på vibrationsmotorens driver til den samme række på brødbrættet som GRD -stiften fra Arduino. Gør det samme med en anden ledning til VCC (volt) på vibrationsmotordriveren til voltrækken på brødbrættet.

Trin 6: Brug endnu en ledning til at forbinde SDA -stiften på vibrationsmotordriveren til SDA -stiften direkte på Arduino. Igen, gør det samme med SCL -benene på begge. Alternativt kan du følge en lignende tilgang til trin 5 og forbinde SDA- og SCL -benene på Arduino til deres egne rækker på brødbrættet via jumperwires. Kør derefter en ledning fra rækken, hvor SDA -stiften er forbundet på brødbrættet til SDA -stiften på motordriveren. Gør det samme for SCL -rækken på brødbrættet med SCL -stiften på motordriveren.

Trin 7: Nu afslutter vi med at forbinde knappen til vibrationsmotordriveren og Arduino. Brug en anden jumper wire til at forbinde GRD'en fra 4 -pin jumper wire forbundet til knappen breakout til den samme række som de andre GRD ledninger på brødbrættet. Gør det samme med volt igen (VCC).

Trin 8: Tilslut en sidste skrivning fra SIG på knapudbruddet til en pin på Arduino (i forbindelse med vores kode brugte vi pin 7).

Trin 9: Tilslut Arduino, og upload koden, og se den fungere!

Trin 4: Koden

Knap-vibrationsmotor. C

/ * Kode tilpasset fra https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide?_ga=2.227031901.1514248658.1513372975-1149214600.1512613196 */
#omfatte// SparkFun Haptic Motor Driver Library
#omfatte// I2C bibliotek
SFE_HMD_DRV2605L HMD; // Opret haptisk motordriverobjekt
int -knap = 7; // vælg input -pin 7 til trykknap
int button_val = 0; // variabel til aflæsning af pin -status
voidsetup ()
{
/ * Initialiser Haptic Motor Driver Object */
HMD.begynd ();
Serial.begin (9600);
HMD. Mode (0); // Intern udløserindgangstilstand - Skal bruge GO () -funktionen til at udløse afspilning.
HMD. MotorSelect (0x36); // ERM -motor, 4x bremsning, Medium loop gain, 1.365x tilbage EMF gain
HMD. Library (2); // 1-5 & 7 for ERM-motorer, 6 for LRA-motorer
}
voidloop ()
{
/ * Start vibrationsmotoren */
HMD.go ();
button_val = digitalRead (knap);
hvis (button_val == HIGH) {
/* Denne output til at logge den knap er blevet trykket på, brug til debugginh*/
Serial.println ("Knap trykket.");
/ * Bølgeformbiblioteket har 0-122 forskellige typer bølger */
HMD. Waveform (0, 69);}
andet{
/ * Hvis der ikke trykkes på knappen, skal du stoppe vibrationsmotoren */
HMD.stop ();
}
}

se rawButton-Vibration-Motor.c hostet af ❤ af GitHub

Trin 5: Video af opsætning af knap til vibrationsmotor

Image
Image

Trin 6: Prototype af handskeforlængelig

Prototype af handske, der kan forlænges
Prototype af handske, der kan forlænges
Prototype af handske, der kan forlænges
Prototype af handske, der kan forlænges

En mulig anvendelse af knappen på vibrationsmotoren er handsken vist ovenfor. Vi har ændret billigt tilgængelige materialer som sprøjter for at gøre forlængelige "fingerspidser". Vi fastgjorde lundknapperne til enden af de modificerede sprøjter ved hjælp af velcro, skar huller i fingerspidserne på en handske og placerede hver sprøjte gennem hullerne. Knappernes 4 -polede jumperwires er trådet gennem sprøjterne og er lange nok til, at du kan forlænge sprøjterne til deres fulde længde. Arduino og brødbræt er fastgjort via velcro til toppen af handsken, hvilket gør det muligt at tilslutte knappernes ledninger let gennem en lille spalte på bunden af hver fingerspids. Motorføreren er fastgjort til handskens underside ved åbningen for at holde vibrationsmotoren fast på handskens inderside. Når brugeren har handsken på, sidder vibrationsmotoren på undersiden af brugerens håndled. Når brugeren rører ved en overflade og trykker på en af knapperne, gives der en unik feedback -vibration gennem motoren.

Tankeprocessen bag en sådan handske ville være at lade nogen, der bærer den, "røre" ting ud over deres normale fingerspidser og modtage feedback om, at de rører ved disse overflader. Vibrationsfeedbacken ændres afhængigt af hvilken finger der rører overfladen, så det er muligt for brugeren at fortælle hvilken finger der rører overfladen baseret på vibrationsmønsteret.

Der er mange måder at tage prototypen videre på, f.eks. Ved at gøre fingrene mere forlængelige eller foretage feedbackændringen baseret på den type overflade, der skal røres. Ideelt set ville der blive skabt forlængelige fingre via 3D -udskrivning for bedre teleskopmuligheder. En temperatursensor kan bruges i stedet for knapperne for at give feedback om, hvor varm overfladen brugeren rører, eller en fugtføler til lignende formål. En måde at mærke, hvor langt "fingeren" er blevet forlænget, kan implementeres, for at give brugeren mulighed for at vide, hvor langt væk objektet, de berører, er. Dette er kun et par mulige muligheder for at tage denne prototype videre.

Denne handske kan laves med almindelige materialer som en let måde at udvide dine sanser og skabe feedback, som brugeren kan mærke og forstå.

Trin 7: Kode til flere knapper med unik vibrationsoutput

mutliple_buttons_to_vibmotor.ino

/ * Kode tilpasset fra SparkFun https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide */
#omfatte// SparkFun Haptic Motor Driver Library
#omfatte// I2C bibliotek
SFE_HMD_DRV2605L HMD; // Opret haptisk motordriverobjekt
int button_middle = 7;
int button_index = 5; // vælg input -pin til trykknap
int button_ring = 9;
int button_pinky = 3;
voidsetup ()
{
HMD.begynd ();
Serial.begin (9600);
HMD. Mode (0); // Intern udløserindgangstilstand - Skal bruge GO () -funktionen til at udløse afspilning.
HMD. MotorSelect (0x36); // ERM -motor, 4x bremsning, Medium loop gain, 1.365x tilbage EMF gain
HMD. Library (2); // 1-5 & 7 for ERM-motorer, 6 for LRA-motorer
}
voidloop ()
{
HMD.go (); // start vibrationsmotoren
/ * Kontroller, hvilken knap der er trykket på, og udsend bølgeform 0-122 */
hvis (digitalRead (button_middle) == HIGH) {
Serial.println ("Knap trykket.");
HMD. Waveform (0, 112);}
elseif (digitalRead (button_index) == HIGH) {
HMD. Bølgeform (0, 20);
}
elseif (digitalRead (button_ring) == HIGH) {
HMD. Bølgeform (0, 80);
}
elseif (digitalRead (button_pinky) == HIGH) {
HMD. Bølgeform (0, 100);
}
/ * Hvis der ikke trykkes på en knap, skal du stoppe */
andet{
HMD.stop ();
}
}

se rawmutliple_buttons_to_vibmotor.ino hostet af ❤ af GitHub

Anbefalede: