Braço Robótico 3D Arduino
DESCRIÇÃO
Kit Braço Robótico 3D + Servos + Parafusos + Arduino + joystick
Itens Inclusos:
1 Kit braço robótico impresso em impressora 3D;
4 Servos 9g
1 Arduino uno R3
2 Joystick
1 Base joystick
1 Kit de parafusos para montagem
1 Cabo USB
1 shield V5
Observações:
* O braço segue desmontado.
*** Dimensões: aproximadamente 15cm de altura e o braço estendido aproximadamente 20cm.
________________________________________________
Braço robótico 3D Arduino com Joystick
Neste projeto vamos aprender a montar e programar um braço robótico controlado pelo Arduino Uno e joystick.
Para iniciar vamos carregar o código no Arduino Uno e montar o braço, o manual de montagem está disponível AQUI e o código está no final.
Obs: Caso o kit que possua seja do tipo impresso em 3D com joystick duplo no shield veja a ligação AQUI.
Conecte o shield ao Arduino:
Carregue o código no Arduino.
O código está no final, copie o código cole no Arduino IDE e faça a carga.
Este LINK tem as instruções de como carregar um código no Arduino utilizando o Arduino IDE, o código pode ser copiado e colado na tela do Arduno IDE para ser carregado.
Monte o braço em etapas.
Importante:
- Conforme for montado o braço conecte os servos ao shield para testar e centralizar os servos.
- Antes de carregar o código instale a biblioteca VarSpeedServo no Arduino IDE, baixe ela AQUI.
Para conectar os servos ao shield veja as instruções abaixo:
- D9 do shield deve ser conectado no servo da Base;
- D10 do shield deve ser conectado no servo da Garra;
- D11 do shield deve ser conectado no servo da Profundidade;
- D6 do shield deve ser conectado no servo da Altura;
Conecte cada grupo de 3 pinos do servo as saídas do shield correspondentes.
Para conectar os joysticks ao shield veja o desenho abaixo.Código:
#include "VarSpeedServo.h"//Para usar a biblioteca VarSpeedServo
//Definição dos objetos servos do braço robótico
VarSpeedServo servo1;//Base
VarSpeedServo servo2;//Extensão
VarSpeedServo servo3;//Altura
VarSpeedServo servo4;//Garra
//Definição das entradas analogicas do Joytick
//Joystick Esquerdo
int potpin1 = A0;//VRy
int potpin2 = A1;//VRx
//Joystick Direito
int potpin3 = A2;//VRx
int potpin4 = A3;//VRy
//Variaveis
int val1;
int val2;
int val3;
int val4;
//Valores iniciais de posição de cada servo
static int s1 = 70;
static int s2 = 110;
static int s3 = 100;
static int s4 = 80;
/*
A função setup() é executada apenas uma vez no inicio do programa.
Emite instruções para preparar o programa antes que o loop principal
seja executado.
*/
void setup()
{
Serial.begin(9600);//Inicia a porta serial, configura a taxa de dados para 9600bps
//Anexa o objeto servo ao pino
servo1.attach(9); //Base, pino digital 11
servo2.attach(11); //Extensão, pino digital 10
servo3.attach(6); //Altura, pino digital 9
servo4.attach(10); //Garra, pino digital 6
//Move todo o braco para posicao inicial
servo1.write(70);//Base
servo2.write(110);//Extensão
servo3.write(100);//Altura
servo4.write(90);//Garra
}
//A função loop()executa continuamente enquanto o Arduino estiver ligado
void loop()
{
//Controle da base do braço
val1 = analogRead(potpin1);//Lê o valor do pino analógico especificado(A0VRy, joystick Esquerdo)
//Para direita
if (val1 < 100)
{
s1 = s1 - 2;
if (s1 <= 10)
{
s1 = 10;
}
servo1.write(s1);//Posição em graus para o servo
delay(50);//Espera 50 milessegundos
}
//Para esquerda
if (val1 > 900)
{
s1 = s1 + 2;//soma
if (s1 >= 170)
{
s1 = 170;
}
servo1.write(s1);
delay(50);
}
// Controle da extensão do braço
val2 = analogRead(potpin2);
//Para trás
if (val2 > 900)
{
s2 = s2 - 2;
if (s2 <= 10)
{
s2 = 10;
}
servo2.write(s2);
delay(50);
}
//Para frente
if (val2 < 100)
{
s2 = s2 + 2;
if (s2 >= 170)
{
s2 = 170;
}
servo2.write(s2);
delay(50);
}
// Controle da altura do braço
//Abaixar o braço
val3 = analogRead(potpin3);
if (val3 < 100)
{
s3 = s3 - 2;
if (s3 <= 10)
{
s3 = 10;
}
servo3.write(s3);
delay(50);
}
//Levantar o braço
if (val3 > 900)
{
s3 = s3 + 2;
if (s3 >= 170)
{
s3 = 170;
}
servo3.write(s3);
delay(50);
}
// Controle da garra do braço
val4 = analogRead(potpin4);
//Abrir a garra
if (val4 < 100)
{
s4 = s4 - 2;
if (s4 <= 60)
{
s4 = 60;
}
servo4.write(s4);
delay(50);
}
//Fechar a garra
if (val4 > 900)
{
s4 = s4 + 2;
if (s4 >= 150)
{
s4 = 150;
}
servo4.write(s4);
delay(50);
}
//Exibe os valores analogicos na tela
Serial.print(val1);
Serial.print(" : ");
Serial.print(val2);
Serial.print(" : ");
Serial.print(val3);
Serial.print(" : ");
Serial.print(val4);
Serial.println();
}
_________________________________________________________________________
Após a montagem teste os comandos, mudanças podem ser feitas para tornar a operação do braço mais adequada ao usuário.
Para um funcionamento melhor um carregador de celular pode ser ligado a USB do Arduino, após a carga do código, já que a USB do computador fornece uma corrente limitada.