Índice:

Uma aplicação de um botão extensível com feedback de vibração: 7 etapas (com imagens)
Uma aplicação de um botão extensível com feedback de vibração: 7 etapas (com imagens)

Vídeo: Uma aplicação de um botão extensível com feedback de vibração: 7 etapas (com imagens)

Vídeo: Uma aplicação de um botão extensível com feedback de vibração: 7 etapas (com imagens)
Vídeo: React Conf 2021 - Replay 2024, Julho
Anonim
Uma aplicação de um botão extensível com feedback de vibração
Uma aplicação de um botão extensível com feedback de vibração
Uma aplicação de um botão extensível com feedback de vibração
Uma aplicação de um botão extensível com feedback de vibração

Neste tutorial, vamos primeiro mostrar como usar um Arduino Uno para controlar um motor de vibração por meio de um botão estendido. A maioria dos tutoriais sobre botões envolvem o botão na placa de ensaio física, enquanto neste tutorial, o botão foi modificado para ser conectado à placa de ensaio por meio de cabos jumper. Este botão permitirá que você controle a força e o padrão de vibração do motor. Em seguida, mostraremos um possível protótipo de uma tecnologia vestível fazendo uso dessa configuração. Este wearable é uma luva com pontas de dedos extensíveis com botões presos na extremidade, programada para fornecer feedback de vibração exclusivo para o usuário com base no botão específico pressionado.

Etapa 1: componentes necessários para o botão para configuração do motor de vibração

Componentes necessários para o botão para configuração do motor de vibração
Componentes necessários para o botão para configuração do motor de vibração
  • Arduino Uno
  • Tábua de pão
  • Motor Vibrator Coin Vibrator
  • Botão Grove
  • Fios de ligação macho-macho (x10)
  • Jumper Wire 4 Pin
  • Driver do motor tátil
  • Conector de borda macho-fêmea
  • Ferro de solda

Etapa 2: Esquema do botão para configuração do motor de vibração

Esquema para botão para configuração do motor de vibração
Esquema para botão para configuração do motor de vibração

O diagrama anterior foi criado com Fritzing.org.

Etapa 3: A configuração do botão para configuração do motor de vibração

Etapa 1: Solde o conector de borda ao acionador do motor de vibração. Solde os fios do vibrador de moeda nos terminais do acionador do motor de vibração.

Etapa 2: Conecte o cabo de jumper de 4 pinos ao botão breakout.

Etapa 3: usando um dos fios de jumper, conecte o pino GRD no Arduino a uma linha na placa de ensaio.

Etapa 4: usando outro fio de jumper, conecte o pino Volt 3.3 no Arduino a uma linha diferente na placa de ensaio.

Etapa 5: Agora, conectaremos o driver do motor de vibração ao Arduino. Usando um terceiro fio de jumper, conecte o pino GND no driver do motor de vibração à mesma linha da placa de ensaio que o pino GRD do Arduino. Faça o mesmo com outro fio para VCC (volt) no driver do motor de vibração, para a fileira volt da placa de ensaio.

Etapa 6: use outro fio para conectar o pino SDA no driver do motor de vibração ao pino SDA diretamente no Arduino. Novamente, faça o mesmo com os pinos SCL em ambos. Como alternativa, siga uma abordagem semelhante à etapa 5 e conecte os pinos SDA e SCL no Arduino às suas próprias linhas na placa de ensaio por meio de fios de jumper. Em seguida, passe um fio da fileira onde o pino SDA está conectado na placa de ensaio ao pino SDA no driver do motor. Faça o mesmo para a linha SCL na placa de ensaio até o pino SCL no driver do motor.

Etapa 7: Agora terminaremos conectando o botão ao driver do motor de vibração e ao Arduino. Use outro fio jumper para conectar o GRD do fio jumper de 4 pinos conectado ao botão breakout à mesma linha que os outros fios GRD na placa de ensaio. Faça o mesmo com volt mais uma vez (VCC).

Etapa 8: Conecte uma gravação final do SIG no botão breakout a um pino no Arduino (para fins de nosso código, usamos o pino 7).

Etapa 9: Conecte o Arduino, faça upload do código e veja como funciona!

Etapa 4: O Código

Botão-vibração-motor.c

/ * Código adaptado de https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide?_ga=2.227031901.1514248658.1513372975-1149214600.1512613196 * /
#incluir// Biblioteca do driver do motor tátil SparkFun
#incluir// biblioteca I2C
SFE_HMD_DRV2605L HMD; // Criar objeto de driver de motor háptico
botão int = 7; // escolha o pino de entrada 7 para o botão de pressão
botão_val interno = 0; // variável para ler o status do pino
voidsetup ()
{
/ * Initialize Haptic Motor Driver Object * /
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Modo de entrada do acionador interno - Deve-se usar a função GO () para acionar a reprodução.
HMD. MotorSelect (0x36); // Motor ERM, frenagem 4x, ganho de loop médio, ganho de EMF traseiro de 1,365x
HMD. Library (2); // 1-5 e 7 para motores ERM, 6 para motores LRA
}
voidloop ()
{
/ * Iniciar o motor de vibração * /
HMD.go ();
button_val = digitalRead (botão);
if (button_val == HIGH) {
/ * Isso indica que o botão foi pressionado, use para debugginh * /
Serial.println ("Botão pressionado.");
/ * A biblioteca de formas de onda tem 0-122 tipos diferentes de ondas * /
HMD. Waveform (0, 69);}
outro{
/ * Se o botão não for pressionado, pare o motor de vibração * /
HMD.stop ();
}
}

veja rawButton-Vibration-Motor.c hospedado com ❤ por GitHub

Etapa 5: Vídeo do botão para configuração do motor de vibração

Image
Image

Etapa 6: Protótipo de luva extensível

Protótipo de luva extensível
Protótipo de luva extensível
Protótipo de luva extensível
Protótipo de luva extensível

Uma possível aplicação do botão ao motor de vibração é a luva mostrada acima. Modificamos materiais baratos acessíveis, como seringas, para fazer "pontas dos dedos" extensíveis. Colocamos os botões do aro na extremidade das seringas modificadas com velcro, cortamos orifícios na ponta dos dedos de uma luva e colocamos cada seringa nos orifícios. Os fios de jumper de 4 pinos dos botões são enfiados nas seringas e são longos o suficiente para que você possa estender as seringas em seu comprimento total. O Arduino e a placa de ensaio são presos por velcro na parte superior da luva, o que permite que os fios dos botões sejam facilmente conectados por meio de uma pequena fenda na base de cada dedo. O acionador do motor é fixado na parte inferior da luva pela abertura, para prender o motor de vibração no interior da luva. Quando o usuário está com a luva, o motor de vibração fica na parte inferior do pulso do usuário. Quando o usuário toca uma superfície e pressiona um dos botões, uma vibração de feedback única é fornecida pelo motor.

O processo de pensamento por trás de tal luva seria permitir que alguém a usasse "tocasse" coisas além do alcance de seus dedos regulares e recebesse o feedback de que está tocando essas superfícies. O feedback de vibração muda dependendo de qual dedo está tocando a superfície, de modo que seja possível para o usuário dizer qual dedo está tocando a superfície com base no padrão de vibração.

Há muitas maneiras de levar o protótipo adiante, como tornar os dedos mais extensíveis ou fazer a mudança de feedback com base no tipo de superfície que está sendo tocada. Idealmente, dedos extensíveis seriam criados por meio de impressão 3D, para melhores opções de telescópio. Um sensor de temperatura pode ser usado no lugar dos botões, para permitir feedback sobre o quão quente está a superfície que o usuário está tocando, ou um sensor de umidade para fins semelhantes. Uma maneira de sentir o quão longe o "dedo" foi estendido pode ser implementada, para permitir que o usuário saiba a que distância está o objeto que está tocando. Essas são apenas algumas opções possíveis para levar esse protótipo adiante.

Esta luva pode ser confeccionada com materiais comuns como uma maneira fácil de estender seus sentidos e criar feedback que o usuário possa sentir e entender.

Etapa 7: Código para vários botões com saída de vibração exclusiva

mutliple_buttons_to_vibmotor.ino

/ * Código adaptado de SparkFun https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide * /
#incluir// Biblioteca de driver de motor tátil SparkFun
#incluir// biblioteca I2C
SFE_HMD_DRV2605L HMD; // Criar objeto de driver de motor háptico
int button_middle = 7;
botão_index int = 5; // escolha o pino de entrada para o botão de pressão
botão_ring int = 9;
int button_pinky = 3;
voidsetup ()
{
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Modo de entrada do acionador interno - Deve-se usar a função GO () para acionar a reprodução.
HMD. MotorSelect (0x36); // Motor ERM, frenagem 4x, ganho de loop médio, ganho EMF traseiro de 1,365x
HMD. Library (2); // 1-5 e 7 para motores ERM, 6 para motores LRA
}
voidloop ()
{
HMD.go (); // liga o motor de vibração
/ * Verifique qual botão está pressionado e a forma de onda de saída 0-122 * /
if (digitalRead (button_middle) == HIGH) {
Serial.println ("Botão pressionado.");
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);
}
/ * Se nenhum botão for pressionado, pare * /
outro{
HMD.stop ();
}
}

visualizar rawmutliple_buttons_to_vibmotor.ino hospedado com ❤ por GitHub

Recomendado: