Aplikace rozšiřitelného tlačítka s vibrační zpětnou vazbou: 7 kroků (s obrázky)
Aplikace rozšiřitelného tlačítka s vibrační zpětnou vazbou: 7 kroků (s obrázky)
Anonim
Aplikace rozšiřitelného tlačítka s vibrační zpětnou vazbou
Aplikace rozšiřitelného tlačítka s vibrační zpětnou vazbou
Aplikace rozšiřitelného tlačítka s vibrační zpětnou vazbou
Aplikace rozšiřitelného tlačítka s vibrační zpětnou vazbou

V tomto tutoriálu vám nejprve ukážeme, jak pomocí Arduino Uno ovládat vibrační motor pomocí rozšířeného tlačítka. Většina výukových programů o tlačítkách zahrnuje tlačítko na fyzickém breadboardu, zatímco v tomto tutoriálu bylo tlačítko upraveno tak, aby bylo místo toho připojeno k breadboardu pomocí propojovacích kabelů. Toto tlačítko vám umožní ovládat sílu a vibrace motoru. V návaznosti na to ukážeme možný prototyp nositelné technologie využívající toto nastavení. Tato nositelná je rukavice s výsuvnými konečky prstů s knoflíky připevněnými na konci, naprogramovaná tak, aby nositeli poskytovala jedinečnou vibrační zpětnou vazbu na základě konkrétního stisknutého tlačítka.

Krok 1: Komponenty potřebné pro nastavení motoru vibrace z tlačítka

Komponenty potřebné pro nastavení motoru vibrací z tlačítka
Komponenty potřebné pro nastavení motoru vibrací z tlačítka
  • Arduino Uno
  • Prkénko
  • Vibrační motorek na mince
  • Grove Button
  • Propojovací vodiče muž-muž (x10)
  • Propojovací vodič 4kolíkový
  • Ovladač haptického motoru
  • Male-to-Female Edge Connector
  • Páječka

Krok 2: Schémata nastavení motoru s vibracemi na tlačítko

Schémata nastavení motoru s vibracemi na tlačítko
Schémata nastavení motoru s vibracemi na tlačítko

Předchozí diagram byl vytvořen pomocí Fritzing.org.

Krok 3: Nastavení tlačítka na nastavení vibračního motoru

Krok 1: Připájejte okrajový konektor k ovladači vibračního motoru. Zapájejte vodiče mincového vibrátoru do vývodů ovladače vibračního motoru.

Krok 2: Připojte 4kolíkový propojovací kabel k vylomení tlačítka.

Krok 3: Pomocí jednoho z propojovacích vodičů připojte pin GRD na Arduinu k řadě na prkénku.

Krok 4: Pomocí dalšího propojovacího kabelu připojte pin Volt 3.3 na Arduinu k jiné řadě na desce.

Krok 5: Nyní připojíme ovladač vibračního motoru k Arduinu. Pomocí třetího propojovacího vodiče připojte pin GND na ovladači vibračního motoru do stejné řady na desce jako pin GRD z Arduina. Totéž proveďte s dalším vodičem pro VCC (volt) na ovladači vibračního motoru do řady voltů na desce.

Krok 6: Pomocí dalšího kabelu připojte pin SDA na ovladači vibračního motoru ke kolíku SDA přímo na Arduinu. Znovu proveďte totéž s kolíky SCL na obou. Alternativně použijte podobný přístup ke kroku 5 a propojte piny SDA a SCL na Arduinu s jejich vlastními řadami na desce pomocí propojovacích vodičů. Poté spusťte vodič z řady, kde je kolík SDA připojen na desce, ke kolíku SDA na ovladači motoru. Totéž proveďte pro řádek SCL na desce s deskou SCL na ovladači motoru.

Krok 7: Nyní skončíme připojením tlačítka k ovladači vibračního motoru a Arduinu. Pomocí jiného propojovacího kabelu připojte GRD ze 4kolíkového propojovacího vodiče připojeného k přerušení tlačítka do stejné řady jako ostatní vodiče GRD na prkénku. Udělejte to samé s voltem ještě jednou (VCC).

Krok 8: Připojte závěrečný zápis ze SIG na tlačítko breakout k pinu na Arduinu (pro účely našeho kódu jsme použili pin 7).

Krok 9: Připojte Arduino a nahrajte kód a sledujte, jak funguje!

Krok 4: Kód

Tlačítko-vibrace-motor.c

/ * Kód upraven z https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide?_ga=2.227031901.1514248658.1513372975-1149214600.1512613196 */
#zahrnout// Knihovna ovladačů haptického motoru SparkFun
#zahrnout// Knihovna I2C
SFE_HMD_DRV2605L HMD; // Vytvoření objektu ovladače haptického motoru
tlačítko int = 7; // vyberte vstupní pin 7 pro tlačítko
int button_val = 0; // proměnná pro čtení stavu pinů
voidsetup ()
{
/ * Inicializace objektu ovladače haptického motoru */
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Vstupní režim interního spouštění - Pro spuštění přehrávání je nutné použít funkci GO ().
HMD. MotorSelect (0x36); // Motor ERM, 4x brzdění, zisk střední smyčky, 1.365x zpět zisk EMF
HMD. Library (2); // 1-5 & 7 pro motory ERM, 6 pro motory LRA
}
voidloop ()
{
/ * Spusťte vibrační motor */
HMD.go ();
button_val = digitalRead (tlačítko);
if (button_val == VYSOKÉ) {
/* Tento výstup zaznamená, že bylo stisknuto tlačítko, použijte pro ladění*/
Serial.println ("Tlačítko stisknuto.");
/ * Knihovna průběhů má 0-122 různých typů vln */
HMD. Waveform (0, 69);}
jiný{
/ * Pokud není stisknuto tlačítko, zastavte vibrační motor */
HMD.stop ();
}
}

zobrazit rawButton-Vibration-Motor.c hostitelem ❤ od GitHub

Krok 5: Video nastavení motoru s vibrací na tlačítko

Image
Image

Krok 6: Prototyp rukavice rozšiřitelný

Prototyp rukavice rozšiřitelný
Prototyp rukavice rozšiřitelný
Prototyp rukavice rozšiřitelný
Prototyp rukavice rozšiřitelný

Jednou z možných aplikací tlačítka na vibrační motor je rukavice zobrazená výše. Upravili jsme levné dostupné materiály, jako jsou stříkačky, abychom vytvořili roztažitelné „konečky prstů“. Grove knoflíky jsme připevnili na konec upravených stříkaček pomocí suchého zipu, vyřízli otvory v konečcích prstů rukavice a každou stříkačku jsme prostrčili skrz otvory. 4kolíkové propojovací vodiče tlačítek jsou protaženy skrz stříkačky a jsou dostatečně dlouhé, abyste mohli stříkačky prodloužit na celou délku. Arduino a prkénko jsou připevněny pomocí suchého zipu k horní části rukavice, což umožňuje snadné připojení vodičů tlačítek pomocí malé štěrbiny na spodní části každého prstu. Motorový ovladač je připevněn ke spodní straně rukavice otvorem, aby se vibrační motor přilepil na vnitřní stranu rukavice. Když má uživatel rukavici nasazenou, vibrační motor sedí na spodní straně zápěstí nositele. Když se uživatel dotkne povrchu a stiskne jedno z tlačítek, je motorem přenášena jedinečná zpětná vazba.

Myšlenkovým procesem takové rukavice by bylo umožnit někomu, kdo ji nosí, „dotýkat se“věcí mimo dosah běžných konečků prstů a získat zpětnou vazbu, že se dotýká těchto povrchů. Vibrační zpětná vazba se mění podle toho, který prst se dotýká povrchu, takže je možné, aby uživatel na základě vibračního vzoru poznal, který prst se dotýká povrchu.

Existuje mnoho způsobů, jak posunout prototyp dále, například rozšířit prsty nebo změnit zpětnou vazbu na základě typu povrchu, kterého se dotýkáme. V ideálním případě by byly rozšiřitelné prsty vytvořeny pomocí 3D tisku, aby se dosáhlo lepších teleskopických možností. Místo tlačítek by mohlo být použito teplotní čidlo umožňující zpětnou vazbu o tom, jak horký je povrch, kterého se uživatel dotýká, nebo čidlo vlhkosti pro podobné účely. Lze implementovat způsob, jak vycítit, jak daleko byl „prst“prodloužen, aby uživatel věděl, jak daleko je předmět, kterého se dotýkají. Toto je jen několik možných možností, jak tento prototyp posunout dále.

Tato rukavice může být vyrobena z běžných materiálů jako snadný způsob, jak rozšířit vaše smysly a vytvořit zpětnou vazbu, kterou uživatel může cítit a pochopit.

Krok 7: Kód pro více tlačítek s unikátním výstupem vibrací

mutliple_buttons_to_vibmotor.ino

/ * Kód převzat ze SparkFun https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide */
#zahrnout// Knihovna ovladačů haptického motoru SparkFun
#zahrnout// I2C knihovna
SFE_HMD_DRV2605L HMD; // Vytvoření objektu ovladače haptického motoru
int button_middle = 7;
int button_index = 5; // vyberte vstupní pin pro tlačítko
int button_ring = 9;
int button_pinky = 3;
voidsetup ()
{
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Vstupní režim interního spouštění - Pro spuštění přehrávání je nutné použít funkci GO ().
HMD. MotorSelect (0x36); // Motor ERM, 4x brzdění, zisk střední smyčky, 1.365x zpět zisk EMF
HMD. Library (2); // 1-5 & 7 pro motory ERM, 6 pro motory LRA
}
voidloop ()
{
HMD.go (); // spusťte vibrační motor
/ * Zkontrolujte, které tlačítko je stisknuto a výstupní průběh 0-122 */
if (digitalRead (button_middle) == HIGH) {
Serial.println ("Tlačítko stisknuto.");
HMD. Waveform (0, 112);}
elseif (digitalRead (button_index) == VYSOKÝ) {
HMD. Waveform (0, 20);
}
elseif (digitalRead (button_ring) == HIGH) {
HMD. Waveform (0, 80);
}
elseif (digitalRead (button_pinky) == VYSOKÝ) {
HMD. Waveform (0, 100);
}
/ * Pokud není stisknuto žádné tlačítko, zastavte */
jiný{
HMD.stop ();
}
}

zobrazit rawmutliple_buttons_to_vibmotor.ino hostované s ❤ od GitHub