sábado, 17 de dezembro de 2022

 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.