Innholdsfortegnelse:

En applikasjon av en utvidbar knapp med vibrasjonsfeedback: 7 trinn (med bilder)
En applikasjon av en utvidbar knapp med vibrasjonsfeedback: 7 trinn (med bilder)

Video: En applikasjon av en utvidbar knapp med vibrasjonsfeedback: 7 trinn (med bilder)

Video: En applikasjon av en utvidbar knapp med vibrasjonsfeedback: 7 trinn (med bilder)
Video: 🔵 Blackview Tab 16 - ПОДРОБНЫЙ ОБЗОР ПЛАНШЕТА 2024, Juli
Anonim
En applikasjon av en utvidbar knapp med vibrasjonsfeedback
En applikasjon av en utvidbar knapp med vibrasjonsfeedback
En applikasjon av en utvidbar knapp med vibrasjonsfeedback
En applikasjon av en utvidbar knapp med vibrasjonsfeedback

I denne opplæringen skal vi først vise deg hvordan du bruker en Arduino Uno til å kontrollere en vibrasjonsmotor via en utvidet knapp. De fleste opplæringsprogrammer om trykknapper involverer knappen på det fysiske brødbrettet, mens i denne opplæringen har knappen blitt endret for å bli koblet til brødbrettet via jumperkabler i stedet. Denne knappen lar deg kontrollere motorens styrke og vibrasjonsmønster. Etter det vil vi vise en mulig prototype av en bærbar teknologi som bruker dette oppsettet. Denne bærbare er en hanske med uttrekkbare fingertupper med knapper festet til enden, programmert til å gi brukeren unike vibrasjonsfeedback basert på den spesifikke knappen som trykkes.

Trinn 1: Komponenter som trengs for oppsett av knapp til vibrasjonsmotor

Komponenter som trengs for oppsett av knapp til vibrasjonsmotor
Komponenter som trengs for oppsett av knapp til vibrasjonsmotor
  • Arduino Uno
  • Brødbrett
  • Myntvibratorvibrasjonsmotor
  • Grove -knapp
  • Jumper-ledninger fra mann til mann (x10)
  • Jumper Wire 4 Pin
  • Haptic motor driver
  • Mann-til-hunn kantkontakt
  • Loddejern

Trinn 2: Skjema for oppsett av knapp til vibrasjonsmotor

Skjema for oppsett av knapp til vibrasjonsmotor
Skjema for oppsett av knapp til vibrasjonsmotor

Det foregående diagrammet ble opprettet med Fritzing.org.

Trinn 3: Oppsett av knapp til vibrasjonsmotoroppsett

Trinn 1: Lodd kantkontakten til vibrasjonsmotordriveren. Lodd ledningene til myntvibratoren inn i terminalene til vibrasjonsmotordriveren.

Trinn 2: Koble den 4 -pins jumperkabelen til knapputbruddet.

Trinn 3: Koble GRD -pinnen på Arduino til en rad på brødbrettet ved å bruke en av hoppetrådene.

Trinn 4: Koble Volt 3.3 -pinnen på Arduino til en annen rad på brødbrettet ved å bruke en annen startkabel.

Trinn 5: Nå kobler vi vibrasjonsmotordriveren til Arduino. Koble GND -pinnen på vibrasjonsmotordriveren til den samme raden på brødbrettet som GRD -pinnen fra Arduino ved å bruke en tredje starttråd. Gjør det samme med en annen ledning for VCC (volt) på vibrasjonsmotordriveren, til voltrekken på brødbrettet.

Trinn 6: Bruk enda en ledning til å koble SDA -pinnen på vibrasjonsmotordriveren til SDA -pinnen direkte på Arduino. Igjen, gjør det samme med SCL -pinnene på begge. Alternativt kan du følge en lignende tilnærming til trinn 5 og koble SDA- og SCL -pinnene på Arduino til sine egne rader på brødbrettet via jumperwires. Kjør deretter en ledning fra raden der SDA -pinnen er koblet på brødbrettet til SDA -pinnen på motordriveren. Gjør det samme for SCL -raden på brødbrettet til SCL -pinnen på motorføreren.

Trinn 7: Nå avslutter vi med å koble knappen til vibrasjonsmotordriveren og Arduino. Bruk en annen jumper wire til å koble GRD fra 4 -pins jumper wire koblet til knappen breakout til samme rad som de andre GRD ledninger på brødbrettet. Gjør det samme med volt igjen (VCC).

Trinn 8: Koble en siste skrive fra SIG på knapputbruddet til en pinne på Arduino (for bruk av koden vår brukte vi pinne 7).

Trinn 9: Koble til Arduino og last opp koden, og se den fungere!

Trinn 4: Koden

Knapp-vibrasjonsmotor. C

/ * Koden tilpasset fra https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide?_ga=2.227031901.1514248658.1513372975-1149214600.1512613196 */
#inkludere// SparkFun Haptic Motor Driver Library
#inkludere// I2C bibliotek
SFE_HMD_DRV2605L HMD; // Lag et haptisk motordriverobjekt
int -knapp = 7; // velg inngangspinnen 7 for trykknapp
int button_val = 0; // variabel for å lese pin -status
voidsetup ()
{
/ * Initialiser Haptic Motor Driver Object */
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Intern utløserinngangsmodus - Må bruke GO () -funksjonen for å utløse avspilling.
HMD. MotorSelect (0x36); // ERM -motor, 4x bremsing, middels sløyfeforsterkning, 1,365x tilbake EMF -forsterkning
HMD. Library (2); // 1-5 & 7 for ERM-motorer, 6 for LRA-motorer
}
voidloop ()
{
/ * Start vibrasjonsmotoren */
HMD.go ();
button_val = digitalRead (knapp);
hvis (button_val == HIGH) {
/* Denne utgangene for å logge den knappen har blitt trykket, bruk for debugginh*/
Serial.println ("Trykk på knappen.");
/ * Bølgeformbiblioteket har 0-122 forskjellige typer bølger */
HMD. Waveform (0, 69);}
ellers{
/ * Hvis knappen ikke trykkes, stopp vibrasjonsmotoren */
HMD.stop ();
}
}

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

Trinn 5: Video av oppsett av knapp til vibrasjonsmotor

Image
Image

Trinn 6: Prototype av Glove Extendable

Prototype av hansker som kan forlenges
Prototype av hansker som kan forlenges
Prototype av hansker som kan forlenges
Prototype av hansker som kan forlenges

En mulig påføring av knappen på vibrasjonsmotoren er hansken vist ovenfor. Vi har modifisert billige tilgjengelige materialer som sprøyter for å lage "fingertuppene" som kan forlenges. Vi festet lundknappene til enden av de modifiserte sprøyter ved hjelp av borrelås, kuttet hull i fingertuppene på en hanske og plasserte hver sprøyte gjennom hullene. Knappens 4 -pins jumper -ledninger er gjenget gjennom sprøytene og er lange nok til at du kan strekke sprøyten ut i full lengde. Arduino og breadboard er festet via borrelås til toppen av hansken, noe som gjør at knappene på knappene enkelt kan kobles gjennom en liten spalte på bunnen av hver fingertupp. Motordriveren er festet til undersiden av hansken ved åpningen, for å holde vibrasjonsmotoren på innsiden av hansken. Når brukeren har hansken på, sitter vibrasjonsmotoren på undersiden av brukerens håndledd. Når brukeren berører en overflate og trykker på en av knappene, gis en unik tilbakemeldingsvibrasjon gjennom motoren.

Tankeprosessen bak en slik hanske ville være å la noen som bruker den "røre" ting utenfor rekkevidden til de vanlige fingertuppene, og motta tilbakemelding om at de berører disse overflatene. Vibrasjonsfeedbacken endres avhengig av hvilken finger som berører overflaten, slik at det er mulig for brukeren å fortelle hvilken finger som berører overflaten basert på vibrasjonsmønsteret.

Det er mange måter å ta prototypen videre på, for eksempel å gjøre fingrene mer forlengbare, eller å endre tilbakemeldingen basert på typen overflate som berøres. Ideelt sett vil forlengbare fingre bli opprettet via 3D -utskrift, for bedre teleskopalternativer. En temperatursensor kan brukes i stedet for knappene, for å gi tilbakemelding om hvor varmt overflaten brukeren berører, eller en fuktighetssensor for lignende formål. En måte å kjenne hvor langt "fingeren" er blitt forlenget, kan implementeres, slik at brukeren kan vite hvor langt unna objektet de berører er. Dette er bare noen få alternativer for å ta denne prototypen videre.

Denne hansken kan lages med vanlige materialer som en enkel måte å utvide sansene på og skape tilbakemeldinger som brukeren kan føle og forstå.

Trinn 7: Kode for flere knapper med unik vibrasjonsutgang

mutliple_buttons_to_vibmotor.ino

/ * Kode tilpasset fra SparkFun https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide */
#inkludere// SparkFun Haptic Motor Driver Library
#inkludere// I2C bibliotek
SFE_HMD_DRV2605L HMD; // Lag et haptisk motordriverobjekt
int button_middle = 7;
int button_index = 5; // velg inngangspinnen for trykknapp
int button_ring = 9;
int button_pinky = 3;
voidsetup ()
{
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Intern utløserinngangsmodus - Må bruke GO () -funksjonen for å utløse avspilling.
HMD. MotorSelect (0x36); // ERM -motor, 4x bremsing, middels sløyfeforsterkning, 1,365x tilbake EMF -forsterkning
HMD. Library (2); // 1-5 & 7 for ERM-motorer, 6 for LRA-motorer
}
voidloop ()
{
HMD.go (); // start vibrasjonsmotoren
/ * Kontroller hvilken knapp som er trykket og send ut bølgeform 0-122 */
hvis (digitalRead (button_middle) == HIGH) {
Serial.println ("Trykk på knappen.");
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. Bølgeform (0, 100);
}
/ * Hvis ingen knapp trykkes, stopp */
ellers{
HMD.stop ();
}
}

se rawmutliple_buttons_to_vibmotor.ino hostet av ❤ av GitHub

Anbefalt: