Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Controle Remoto Gripper Bot

Componentes e suprimentos

Chassi Runt Rover Half-pint
× 1
Arduino UNO
× 1
V5 Shield
× 1
Jumper feminino / feminino
× 1
L9110S
× 1
Suporte de canal de ângulo único de 90 ° (585424)
× 1
Servo hub leve, Futaba
× 1
Kit de garras padrão A (637094)
× 1
MG995
× 1
Placa Servo padrão
× 1
Suporte de canal de ângulo único de 90 °
× 1
Suporte para 5 slots AA
× 1
Pilhas AA recarregáveis ​​
× 5
.750 "espaçadores de nylon 8-32
× 2
.500 "6-32 parafusos com porcas
× 8
.3125 "parafusos 6-32
× 8

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Alguns meses atrás, meu filho me pediu para torná-lo um robô controlado remotamente. Ele me deu uma lista do que ele queria e nós a reduzimos a uma lista gerenciável :) Isso é o que eu acabei construindo para ele ...
  • Pegue a blindagem do sensor UNO e V5 e encaixe-os.
  • Coloque a placa UNO / Sensor unida no suporte do clipe dentro do centro do bot.
  • Pegue a fita dupla-face e coloque o driver do motor na parede interna esquerda e o adaptador bluetooth na parede direita.

Para este projeto você pode fazer seu próprio chassi ou escolher outro, a escolha é sua.





Etapa 1:o software necessário


Coisas que você precisa para fazer o download:
  • O IDE Arduino
  • Python 2.7 (uma instalação completa com tkinter)
  • A biblioteca pySerial
  • A biblioteca do controlador de motor L9110S anexado .zip (veja os arquivos nesta etapa)
  • O código do robô abaixo ou o .zip anexado (veja os arquivos nesta etapa)
  • O aplicativo de controle remoto Python (veja os arquivos nesta etapa)





Etapa 2:lista de materiais de hardware


As peças de que você precisa são as seguintes:
  • Chassi Runt Rover de meio pint ou um substituto adequado para 4x4
  • Arduino Uno ou placa semelhante com cabo USB
  • blindagem do sensor V5
  • Motorista L9110S (compre um, pois são baratos)
  • MG995 servo ou outro substituto adequado x2
  • Adaptador bluetooth HC-05 ou HC-06 x1
  • Placa servo padrão B x1
  • colchete de 90 graus x1
  • Suporte simples x2
  • Servo hub leve (525125 para Futaba) x1
  • Kit de garras padrão A x1
  • Fios de ligação fêmea para fêmea
  • 5 pilhas AA recarregáveis ​​(NiMH) e carregador
  • Fita adesiva dupla-face e pequenos zíperes
  • Uma bateria de 5 slots 'AA' (se você escolher a opção recarregável AA)
  • Bateria e carregador 6v NiMH ou 7,4v Li-ion
  • 1,250 "6-32 parafusos x2
  • espaçadores de náilon de 0,750 "8-32 x2
  • parafusos de 0,500 "6-32 com porcas x8
  • .3125 "parafusos 6-32 x8

Você pode adquirir muitas das peças do eBay ou de outros fornecedores diretamente, como Sparkfun, Adafruit e ServoCity.

Depois de comprar, coletar e baixar tudo, você está pronto para começar a compilar.





Etapa 3:Montagem - O chassi


Primeiro monte o chassi seguindo as instruções incluídas com o chassi ou vídeo. Depois de terminar, você deve ter algo parecido com a imagem. Ao colocar a placa que segura o controlador no bot, certifique-se de colocá-la nos orifícios do meio. Isso deixará espaço na frente e atrás do bot.

NOTA:Antes de prosseguir, remova todas as 4 rodas, para não danificar os motores ao colocar os outros componentes do robô.





Etapa 4:montagem da garra


Monte a garra seguindo as instruções fornecidas neste vídeo. Depois de terminar, você deve ter algo parecido com a imagem.





Etapa 5:Montagem da garra - Etapa 1


Pegue o suporte de 90 graus, o cubo do servo leve e quatro (4) dos parafusos de 0,3125 "para esta etapa:

Pegue o hub do servo e coloque-o em um lado do suporte e prenda-os juntos com os parafusos de .2125 "como na ilustração e coloque-o de lado Coloque as porcas nos dois parafusos mais curtos e aperte-os Agora conte os dois suportes simples, o 1.250 "parafusos e dois parafusos de 0,500" com porcas, 2 espaçadores de náilon e a placa Servo B. Pegue um único suporte e coloque-o no interior do bot de meio ponto e passe os 2 parafusos de 1,259 "nos orifícios esquerdos (de o interior) e os parafusos de 2,500 "no lado direito. Todas as cabeças dos parafusos estarão no interior do bot, conforme ilustrado. agora coloque o segundo suporte único nos parafusos do lado de fora do bot. Em seguida, pegue o espaçadores de náilon e coloque-os nos mais longos (1,250 ") para fora e, em seguida, aparafuse a placa servo nos parafusos longos. Aperte os parafusos que vão para a placa servo com uma chave hexagonal do tamanho adequado ou chave de fenda se você usou parafusos normais.


Use as imagens para referência, conforme necessário.





Etapa 6:Montagem da garra - Etapa 2

  • Em seguida, pegue o servo restante que você tem e coloque-o no suporte do servo com a coluna para cima. Prenda-o com 4 dos parafusos de .3125 ".
  • Em seguida, pegue o suporte de 90 graus com o cubo do servo nele e monte a garra nele com os 4 dos parafusos de .500 "usando 2 das porcas 8-32 como espaçadores entre o suporte e a garra, conforme ilustrado. Prenda com outra porca no topo da pinça (embaixo do suporte se você girar os parafusos no sentido contrário)
  • Agora pegue o conjunto da garra e coloque-o no servo e use um parafuso servo (do pacote do servo) para prendê-lo no lugar, prendendo-o com firmeza.

Depois de terminar, passe os dois fios do servo através do orifício do suporte plano para o interior do bot.

Veja as fotos para mais detalhes e referências.





Etapa 7:montagem da eletrônica

  • Pegue a blindagem do sensor UNO e V5 e encaixe-os.
  • Coloque a placa UNO / Sensor unida no suporte do clipe dentro do centro do bot.
  • Pegue a fita dupla-face e coloque o driver do motor na parede interna esquerda e o adaptador bluetooth na parede direita.





Etapa 8:Fiação - Os motores

  • Pino A-1A no driver do motor ao pino 5 na blindagem do sensor
  • Pino A-1B no driver do motor ao pino 6 na blindagem do sensor
  • Pino B-1A no driver do motor para pino 3 na blindagem do sensor
  • Pino B-1B no driver do motor ao pino 11 na blindagem do sensor

Agora, com os robôs voltados para LONGE de você, pegue os fios do lado ESQUERDO e -
  • Conecte os dois fios PRETOS à esquerda ao primeiro terminal de parafuso de saída para o motor A
  • Conecte os dois fios VERMELHOS à esquerda ao segundo terminal de parafuso de saída para o motor A

Pegue os fios do lado DIREITO e -
  • Conecte os dois fios PRETOS à esquerda ao primeiro terminal de parafuso de saída para o Motor B
  • Conecte os dois fios VERMELHOS à esquerda ao segundo terminal de parafuso de saída para o motor B

Os Servos:
  • Agora conecte o fio do servo Y à linha do pino 2 na blindagem do sensor. O fio branco ou laranja é sempre o fio de sinal.
  • Agora conecte o fio do servo X (garra) à linha do pino 7 na blindagem do sensor. O fio branco ou laranja é sempre o fio de sinal.





Etapa 9:Conectando o Módulo Bluetooth

  • Adaptador Bluetooth Tx -> pino de proteção do sensor 0
  • Adaptador Bluetooth Rx -> pino de blindagem do sensor 1





Etapa 10:Adicionando energia


Conecte os cabos de alimentação do pacote de bateria 5 'aa' (ou outro pacote de 6 V) ao terminal de parafuso de alimentação da blindagem do sensor:
  • Vermelho para Vcc
  • Preto para GND
  • Em seguida, certifique-se de que o jumper na blindagem do sensor V5 esteja no lugar nos pinos do jumper.
  • Conecte o pino GND no driver L9110s a um pino GND na blindagem do sensor.
  • Conecte o fio positivo da bateria de 6 V ou 7,2 V ou outra bateria que você escolheu para os motores ao pino Vcc no driver do motor L9110S.
  • Conecte o fio negativo (GND) da bateria do motor a um pino GND na blindagem do motor.





Etapa 11:Configurando o Módulo Bluetooth HC05 / HC06


Agora você precisará acessar as configurações do dispositivo bluetooth no seu PC a partir do painel de "Controle" ou "Sistemas" do SO ou usar o Google para ajudar.

Possíveis informações de configuração do Bluetooth do sistema operacional:
  • Windows
  • Linux (eu uso blueman no Linux Mint, mas veja sua distribuição para mais informações)
  • Mac

Você precisará anotar o nome ou número do dispositivo da porta serial que está atribuído a ele.





Etapa 12:Carregando o código


Com a fiação verificada e verificada novamente , É hora de carregar o código. Siga as instruções no site do Arduino sobre como instalar o IDE do Arduino.

Após a instalação do IDE, você pode instalar a biblioteca do driver do motor L9110. Faça isso baixando o arquivo zip incluído na ETAPA 1 chamado L9110Driver.zip e extraindo-o para a pasta de bibliotecas do Arduino ou seguindo estas instruções sobre como adicionar uma biblioteca.

Agora que o IDE e a biblioteca do driver do motor foram instalados, carregue o código do robô no IDE do Arduino a partir do arquivo zip encontrado na ETAPA 1 denominado blue_t_slave.zip. Esses arquivos também estão incluídos nesta etapa.

Conecte seu PC e Arduino com o cabo USB. Agora escolha a placa no menu Ferramentas-> Placa no IDE, Uno para este projeto (escolha a placa que você possui se for diferente do Uno) Agora, no menu Ferramentas-> Porta, escolha sua porta de comunicação. Depois de fazer isso, clique no botão de upload. Se tudo correu bem, o código foi carregado; caso contrário, consulte aqui para obter ajuda sobre o IDE e questões relacionadas.





Etapa 13:executando o aplicativo de controle Python


Para executar o aplicativo de controle remoto Python, baixe o arquivo zip desta etapa e extraia-o para o local de onde deseja executá-lo. Em seguida, abra um shell de comando (ou seja, terminal, cmd.exe, etc ...) e navegue até o diretório para o qual você extraiu o arquivo. Agora digite: python rover.py da linha de comando e uma janela semelhante à da imagem deve aparecer. Caso contrário, procure quaisquer erros do Python e corrija (ou seja, bibliotecas ausentes, etc ...) O site do Python pode ajudar, se necessário.

Assim que o aplicativo estiver em execução, você deve estar pronto para começar.

Agora, ligue o bot. Em seguida, digite a porta de comunicação do seu adaptador e clique no botão "Conectar". Após alguns segundos, você deverá ver os outros controles ativados e o botão de conexão desativado. Isso significa que você está conectado ao robô. Se você não conseguir se conectar ao adaptador bluetooth, terá que usar a magia do Google para ajudá-lo!

O aplicativo de controle é simples de usar e permite controles de mouse ou teclado.

Os controles do teclado são:
  • As setas são para frente, reverso, vire à esquerda 90 graus, vire à direita 90 graus
  • a - vire à esquerda 45 graus
  • s - vire à direita 45 graus
  • h - parar (parar)
  • y - definir eixo Y da garra
  • u - definir a pinça aberta / fechada
  • c - casa da garra

Os comandos para frente e para trás são constantes, ou seja, eles mantêm o bot em movimento após a execução até que uma nova direção seja enviada ou um comando de parada.

As curvas de 90 e 45 graus são temporárias, ou seja, após algum atraso, elas param o robô de se mover.

Os controles deslizantes da garra não definem automaticamente a garra no bot. Você tem que apertar o botão ou tecla "Set" correspondente para fazer a execução real do conjunto.

Os valores do Slider variam de 0 a 180.
  • Eixo Y da garra:0 é totalmente para cima e 180 é totalmente para baixo.
  • Alça aberta / fechada:0 está totalmente fechada e 180 e totalmente aberta.

Use o botão "Desconectar" para parar de usar o programa. Isso enviará comandos para parar o bot e inicializar a garra.



Código

  • GUI do driver Python
  • Código Rover
GUI do driver Python Python
 #! / usr / bin / env python ## Para Linux, BSD ou Mac OSX, você pode executar chmod + x neste script para tornar executável ############### Aplicativo de controle Rover ## Escrito por Scott Beasley - 2015 # Gratuito para usar ou modificar. Aproveite. ######### Import sysimport serialimport timefrom Tkinter import * import tkFontimport tkMessageBox # Crie a janela para o aplicativo applicationclass (Frame):# Faça a janela def createWidgets (self):self.connected =False self.message =StringVar () # Faça uma pequena fonte para os botões do conjunto de garras. helv6 =tkFont.Font (family ='Helvetica', size =6, weight ='normal') self.frame =Frame (self.master) self.frame.pack () self.f1 =Frame (self.frame) self .l1 =Rótulo (self.f1, text ="Comm Port:") self.l1.pack (side =LEFT) self.comm_entry =Entry (self.f1, bd =5, name ="comm_entry") self.comm_entry .pack (side =LEFT) self.connectButton =Button (self.f1, text ="Conectar", command =self.SerialConnect, name ="b_connect") self.connectButton.pack (side =LEFT) self.disconnectButton =Botão (self.f1, text ="Desconectar", comando =self.SerialDisconnect, name ="b_disconnect") self.disconnectButton.pack (side =RIGHT) self.f1.grid (row =0, column =0) self.f2 =LabelFrame (self.frame, bd =3, relief ="groove", text ="Ground Control") self.g_vert_fm =Frame (self.f2) self.grip_vert =Scale (self.g_vert_fm, from_ =0, to =180) self.grip_vert.grid (row =0, column =0, rowspan =4, sticky =W) self.grip_vert_set =Button (self.g_vert_fm, text ="Set", command =self.GripperY, name ="b_grip_vert_set", largura =1, altura =2, fonte =helv6) self.grip_vert_set.grid (row =5, column =0, sticky =W) self.master.bind ("", self.GripperY) self. g_vert_fm.grid (row =0, column =0, rowspan =4, sticky =W) self.leftforwardButton =Button (self.f2, text ="\\", command =self.TurnLeft45, name ="b_left_forward") self .leftforwardButton.grid (row =0, column =1) self.master.bind ("", self.TurnLeft45) self.leftButton =Button (self.f2, text ="<", command =self.TurnLeft, name ="b_left") self.leftButton.grid (row =1, column =1) self.master.bind ("
 ", self.TurnLeft ) self.rightforwardButton =Button (self.f2, text ="/", command =self.TurnRight45, name ="b_right_forward") self.rightforwardButton.grid (row =0, column =3) self.master.bind (" 
  ", self.TurnRight45) self.haltButton =Botão (self.f2, text =" Halt! ", command =self.Halt, name =" b_halt ") self.haltButton .grid (linha =1, coluna =2) self.master.bind ("  ", self.Halt) self.rightButton =Botão (self.f2, text ="> ", command =self.TurnRight, name =" b_right ") self.rightButton.grid ( linha =1, coluna =3) self.master.bind ("
 ", self.TurnRight) self.upButton =Button (self.f2, text ="^", comando =self.Forward, name ="b_forward") self.upButton.grid (row =0, column =2) self.master.bind ("
 ", self.Forward) self.leftdownButton =Button (self.f2, text ="/", command =self.TurnRight45, name ="b_left_down") self.leftdownButton.grid (row =2, column =1) self.downButton =Button (self. f2, text ="V", command =self.Reverse, name ="b_reverse") self.downButton.grid (row =2, column =2) self.master.bind ("
 ", self.Reverse) self.f2.grid (row =1, column =0, pady =25) self.rightdownButton =Button (self.f2, text ="\\", command =self.TurnLeft45, name ="b_right_down") self.rightdownButton.grid (row =2, column =3) self.g_horz_fm =Frame (self.f2) self.grip_horz =Escala (s elf.g_horz_fm, from_ =0, to =180, orient =HORIZONTAL) self.grip_horz.grid (row =0, column =0, columnspan =7, sticky =E) self.grip_horz_set =Button (self.g_horz_fm, text ="Set", command =self.GripperX, name ="b_grip_horz_set", width =1, height =2, font =helv6) self.grip_horz_set.grid (row =0, column =8) self.master.bind (" ", self.GripperX) self.g_horz_fm.grid (row =4, column =0, columnspan =7, sticky =E) self.master.bind ("  
  ", self.GripperHome) self.f3 =Frame (self.frame) self.l2 =Marcador (self.f3, text ="Última ação:") self.l2.pack (side =LEFT) self.l3 =Label (self.f3, text ="", textvariable =self.message) self.l3.pack (side =RIGHT) self.f3.grid (row =3, column =0, pady =8) # Defina o estado dos botões de controle do bot. Habilite quando conectado, # Desabilitado caso contrário. def CtrlButtonsState (self, bstate):self.leftforwardButton.config (state =bstate) self.leftButton.config (state =bstate) self.rightforwardButton.config (state =bstate) self.rightButton.config (state =bstate) self. upButton.config (state =bstate) self.leftdownButton.config (state =bstate) self.downButton.config (state =bstate) self.rightdownButton.config (state =bstate) self.haltButton.config (state =bstate) self. connectButton.config (state =bstate) self.grip_horz.config (state =bstate) self.grip_vert.config (state =bstate) self.grip_horz_set.config (state =bstate) self.grip_vert_set.config (state =bstate) # Set o estado da entrada da porta de comunicação. Habilite quando não conectado, # Desabilitado quando o bot está conectado. def ConnCtrlsState (self, bstate):self.connectButton.config (state =bstate) self.comm_entry.config (state =bstate) # Conecte à porta de comunicação digitada no campo de entrada comm. def SerialConnect (self):try:# Altere a taxa de transmissão aqui se diferente, então 9600 self.ser =serial.Serial (self.comm_entry.get (), 9600) exceto IOError:tkMessageBox.showerror ("Porta de comunicação inválida", " Porta de comunicação não encontrada. ") Return self.ConnCtrlsState (DISABLED) self.CtrlButtonsState (NORMAL) self.message.set (" SerialConnect ") self.connected =True time.sleep (3) # Aguarde um pouco para que a conexão aconteça # Desconecte-se do bot (feche a porta de comunicação). def SerialDisconnect (self):try:# Envie um comando Halt caso o bot ainda esteja se movendo. self.send_cmd ('h', "Halt!") time.sleep (1) self.ser.close () except IOError:print "Não foi possível fechar a porta ..." self.message.set ("SerialDisconnect") self .ConnCtrlsState (NORMAL) self.CtrlButtonsState (DISABLED) self.connected =False time.sleep (2) # Espere um pouco para que a desconexão aconteça # Envie o comando para a porta de comunicação aberta def send_cmd (self, action, msg):if self.connected ==True:para val em ação:self.ser.write (val) self.ser.flush () self.message.set (msg) # Envie ao bot um comando de virar à esquerda. def TurnLeft (self, event =None):self.send_cmd ('a', "Left") # Envia ao bot um comando turn-left-up. def TurnLeft45 (self, event =None):self.send_cmd ('q', "Left45") # Envie ao bot um comando para virar à direita. def TurnRight (self, event =None):self.send_cmd ('s', "Right") # Envia ao bot um comando turn-right-up. def TurnRight45 (self, event =None):self.send_cmd ('e', "Right45") # Envie ao bot um comando Forward. def Forward (self, event =None):self.send_cmd ('w', "Up") # Envia ao bot um comando Reverse. def Reverse (self, event =None):self.send_cmd ('z', "Down") # Envia ao bot um comando Halt. def Halt (self, event =None):self.send_cmd ('h', "Halt!") # Defina a garra (X). def GripperX (self, event =None):# Leia o controle deslizante e envie o valor para o controlador do bot # Observação:0 é totalmente fechado e 180 está totalmente aberto grp_change =('>', chr (self. grip_horz.get ()), chr (255)) self.send_cmd (grp_change, "Gripper X") # Defina a garra Y. def GripperY (self, event =None):# Leia o controle deslizante e envie o valor para o controlador de bot # Nota:0 é totalmente para cima e 180 para baixo grp_change =('^', chr (self.grip_vert.get ()), chr (255)) self.send_cmd (grp_change, "Gripper Y ") # Coloque a garra na posição" inicial ". def GripperHome (self, event =None):self.send_cmd (('c', chr (255)), "Gripper Home") def __init__ (self, master =None):Frame .__ init__ (self, master) self. pack () self.createWidgets () self.CtrlButtonsState (DISABLED) # Inicie a GUI (Tk), dimensione e intitule o aplicativo windowdef main ():root =Tk () root.geometry ("450x350") root.wm_title ( "Rover Control Center (RCC)") app =App (master =root) app.mainloop () if __name__ =='__main__':main () 
Código Rover Arduino
 / * Bluetooth Rover. Objetivo na vida ... Segue seus comandos enviados magicamente pelo ar! Ou de USB :) Escrito por Scott Beasley - 2015 Grátis para usar ou modificar. Aproveite. * // * Usa a biblioteca L9110S. Ele funciona com o L9110S h-bridge. Faça download de https://github.com/jscottb/L9110Driver ou clone o zip de https://github.com para remover o '-master' do nome do arquivo para adicionar a biblioteca * / # include  #include  #define SERVO_Y 2 // Pin garra Y servo # define SERVO_CLAW 7 // Pin garra Garra servo # define pinAIN1 5 // define I1 interface # define pinAIN2 6 // define I2 interface # define pinBIN1 3 / / define interface I3 # define pinBIN2 11 // define interface I4 // Velocidade define # define MAXFORWARDSPEED 225 // Velocidade máxima que queremos avançar # define MAXBACKWARDSPEED 225 // Velocidade reversa máxima # define TOPSPEED 255 // Usado para ajudar a ligar melhor tapete e superfícies mais ásperas.// Vários atrasos de tempo usados ​​para dirigir e servo # define TURNDELAY 475 # define TURNDELAY45 235 # define BACKUPDELAY 400 # define SERVOMOVEDELAY 200 # define SERVOSEARCHDELAY 85 / * Área global. * /// Cria o motor, objetos servo para fazer interface com L9110_Motor motor_left (pinAIN1, pinAIN2); // Criar objeto motor esquerdoL9110_Motor motor_right (pinBIN1, pinBIN2); // Cria o objeto motor direitoServo grip_y_servo; // Cria um objeto servo para a garra Y axisServo grip_servo; // Crie um objeto servo para a pinça clawvoid setup () {// Altere a taxa de transmissão aqui se for diferente de 9600 Serial.begin (9600); grip_y_servo.attach (SERVO_Y); // Anexe o servo SERVO_LR grip_y_servo.write (90); grip_servo.attach (SERVO_CLAW); // Anexe o servo SERVO_LR grip_servo.write (90); atraso (500);} loop vazio () {comando de byte =0, val =0; if (Serial.available ()> 0) {// ler o byte de comando de entrada command =Serial.read (); } switch (comando) {case 'w':go_forward (); //Serial.println ("Going Forward"); pausa; case 'z':go_backward (); //Serial.println ("Going Backwards"); pausa; case 'a':go_left (); atraso (TURNDELAY); halt (); //Serial.println ("Turning Left"); pausa; case 's':go_right (); atraso (TURNDELAY); halt (); //Serial.println ("Virando à direita"); pausa; case 'q':go_left (); atraso (TURNDELAY45); halt (); //Serial.println ("Turning Left"); pausa; case 'e':go_right (); atraso (TURNDELAY45); halt (); //Serial.println ("Virando à direita"); pausa; case 'h':halt (); //Serial.println ("Halting"); pausa; case '>':// movimento da garra X envia o valor definido do servo val =Serial.read (); // Limitamos o valor aos limites reais de movimento da configuração grip_servo.write (constrain (val, 64, 179)); //Serial.println ("GripperX"); pausa; case '^':// Movimento da garra Y envia o valor definido do servo val =Serial.read (); // Limitamos o valor aos limites reais de movimento da configuração grip_y_servo.write (constrain (val, 53, 179)); //Serial.println ("GripperY"); pausa; case 'c':// Limitamos o valor aos limites reais de movimento da configuração grip_y_servo.write (90); grip_servo.write (90); //Serial.println ("GripperHome"); pausa; case 255:// Enviado após todos os comandos do gripper Serial.flush (); pausa; } Serial.flush (); delay (125);} void go_forward () {//Serial.println ("Indo em frente ..."); // Acelere os motores até a velocidade. // Ajuda a girar em algumas superfícies e ware e tare no ramp_it do GM (MAXFORWARDSPEED, FORWARD, FORWARD); // Defina para toda a velocidade definida apenas no caso de a rampa do último tanque não ter // tudo isso. motor_left.setSpeed ​​(MAXFORWARDSPEED); motor_right.setSpeed ​​(MAXFORWARDSPEED); motor_left.run (FORWARD | RELEASE); motor_right.run (FORWARD | RELEASE);} void go_backward () {//Serial.println ("Indo para trás ..."); // Acelere os motores até a velocidade. // Ajuda a girar em algumas superfícies e ware e tare no ramp_it do GM (MAXBACKWARDSPEED, BACKWARD, BACKWARD); // Defina para toda a velocidade definida apenas no caso de a rampa do último tanque não ter // tudo isso. motor_left.setSpeed ​​(MAXBACKWARDSPEED); motor_right.setSpeed ​​(MAXBACKWARDSPEED); motor_left.run (BACKWARD | RELEASE); motor_right.run (BACKWARD | RELEASE);} void go_left () {//Serial.println ("Indo para a esquerda ..."); // Acelere os motores até a velocidade. // Ajuda a girar em algumas superfícies e ware e tare no ramp_it do GM (TOPSPEED, BACKWARD, FORWARD); // Defina para toda a velocidade definida apenas no caso de a rampa do último tanque não ter // tudo isso. motor_left.setSpeed ​​(TOPSPEED); motor_right.setSpeed ​​(TOPSPEED); motor_left.run (BACKWARD | RELEASE); motor_right.run (FORWARD | RELEASE);} void go_right () {//Serial.println ("Indo para a direita ..."); // Acelere os motores até a velocidade. // Ajuda a girar em algumas superfícies e ware e tare no ramp_it do GM (TOPSPEED, FORWARD, BACKWARD); // Defina para toda a velocidade definida apenas no caso de a rampa do último tanque não ter // tudo isso. motor_left.setSpeed ​​(TOPSPEED); motor_right.setSpeed ​​(TOPSPEED); motor_left.run (FORWARD | RELEASE); motor_right.run (BACKWARD | RELEASE);} void halt () {//Serial.println ("Halt!"); // ramp_it (0, BRAKE, BRAKE); motor_left.setSpeed ​​(0); motor_right.setSpeed ​​(0); motor_left.run (BRAKE); motor_right.run (BRAKE);} void ramp_it (velocidade uint8_t, uint8_t lf_dir, uint8_t rt_dir) {uint8_t ramp_val =0, step_val =0; step_val =abs (velocidade / 4); if (! velocidade) step_val =-step_val; para (uint8_t i =0; i <4; i ++) {rampa_val + =etapa_val; motor_left.setSpeed ​​(ramp_val); motor_right.setSpeed ​​(ramp_val); motor_left.run (lf_dir | RELEASE); motor_right.run (rt_dir | RELEASE); atraso (25); }} 
Driver L9110
Driver do motor L9110 para Arduinohttps://github.com/jscottb/L9110Driver

Peças personalizadas e gabinetes

4wdgripperbt2.fzz

Esquemas

4wdgripperbt2.fzz

Processo de manufatura

  1. Sensor de temperatura múltipla
  2. Controle de ferro de solda DIY para 862D +
  3. MotionSense
  4. Impressora 3D Segurança contra incêndio
  5. Levitação eletromagnética repulsiva Arduino
  6. Registrador de dados do balão meteorológico Arduino
  7. ArduFarmBot - Parte 2:Estação Remota e Implementação IoT
  8. CoroFence - Detector Térmico🖖
  9. Monitoramento em nuvem, um sistema de controle remoto
  10. 5 vantagens do controle remoto de produção