Descrição
Kit Braço Robótico Acrílico + Servos + Parafusos + Arduino + joystick
Itens Inclusos:
1 Kit braço robótico em acrílico
4 Servos 9g
1 Arduino uno R3
1 Joystick duplo
1 Kit de parafusos para montagem
1 Cabo USB
Observações:
* O braço segue desmontado.
*** Dimensões: aproximadamente 15cm de altura e o braço estendido aproximadamente 20cm.
Necessário ter conhecimentos em eletrônica e programação para o funcionamento do kit robótico.
_________________________________________________________________________________
Braço robótico Arduino com Joystick duplo
Neste projeto vamos aprender a montar e programar um braço robótico controlado pelo Arduino Uno e um shield joystick duplo.
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á abaixo ou AQUI.
Conecte o shield ao Arduino:
Carregue o código no Arduino.
O código está abaixo ou AQUI, 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 tetar e centralizar os servos, veja o VÍDEO.
Obs: Em algumas versões do SHIELD o pino correspondente ao AREF do arduino deve ser cortado, ela interfere no funcionamento.
Obs: Caso o kit que possua seja do tipo impresso em 3D com joystick separado, veja a montagem AQUI.
Para conectar os servos ao shield joystick duplo 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 Altura;
- D6 do shield deve ser conectado no servo da Profundidade;
Conecte caga grupo de 3 pinos do servo as saídas do shield correspondentes.
#define potGarra 0 // porta A0 Joystick esquerda POT X
#define potBase 1 // porta A1 Joystick esquerda POT Y
#define potAltura 2 // porta A2 Joystick direita POT X
#define potProfundidade 3 // porta A3 Joystick direita POT Y
int atraso = 10; // atraso de 10 milisegundos
int valorGarra ;
int valorBase ;
int valorAltura ;
int valorProfundidade;
int valorGarraFinal ;
int valorBaseFinal ;
int valorAlturaFinal ;
int valorProfundidadeFinal;
#include <Servo.h> // Biblioteca Servo
Servo myservoBase; // Objeto servo para controlar a base
Servo myservoGarra; // Objeto servo para controlar a garra
Servo myservoAltura; // Objeto servo para controlar a altura do braço
Servo myservoProfundidade; // Objeto servo para profundidade a altura do braço
void setup()
{
myservoBase.attach(9); //Associa cada objeto a um pino pwm
myservoGarra.attach(10);
myservoAltura.attach(11);
myservoProfundidade.attach(6);
Serial.begin(9600); // console serial 9600 Bps
valorBaseFinal = 90; // valores usados para o controle dos servomotores
valorAlturaFinal = 90;
valorProfundidadeFinal = 90;
}
void leituraJoysticks ()
{
valorGarra = map(analogRead(potGarra), 10, 1000, 179, 0); // leitura do Joystick POT Garra
Serial.print(" Valor Garra ="); Serial.println(valorGarra); // print Valor Garra
valorBase = map(analogRead(potBase), 10, 1000, 0, 179); // leitura do Joystick POT Base
Serial.print(" Valor Base ="); Serial.println(valorBaseFinal); // print Valor Base
valorAltura = map(analogRead(potAltura), 10, 1000, 0, 179); // leitura do Joystick POT Altura
Serial.print(" Valor Altura ="); Serial.println(valorAlturaFinal); // print Valor Altura
valorProfundidade = map(analogRead(potProfundidade), 10, 1000, 0, 179); // leitura do Joystick Prof
Serial.print(" Valor Profundidade ="); Serial.println(valorProfundidadeFinal); // print Profundidade
Serial.println(); Serial.println(); // salta duas linhas
}
void loop()
{
leituraJoysticks (); // leitura dos POTs dos Joysticks
myservoGarra.write(valorGarra); // comando PWM para o servomotor Garra
if (valorBase > 95) // se Valor do POT Base > 95
{
valorBaseFinal = valorBaseFinal + 1; // incrementa Valor Base
if (valorBaseFinal > 180) valorBaseFinal = 180; // limita Valor Base máximo até 180
delay (atraso); // atraso
}
if (valorBase < 80) // se Valor do POT Base < 80
{
valorBaseFinal = valorBaseFinal - 1; // decrementa Valor Base
if (valorBaseFinal < 0) valorBaseFinal = 0; // limita Valor Base mínimo até 0
delay (atraso); // atraso
}
myservoBase.write(valorBaseFinal); // comando PWM para o servomotor Base
if (valorAltura > 95) // se Valor do POT Altura > 95
{
valorAlturaFinal = valorAlturaFinal + 1; // incrementa Valor Altura
if (valorAlturaFinal > 160) valorAlturaFinal = 160; // limita Valor Base máximo até 160
delay (atraso); // atraso
}
if (valorAltura < 80) // se Valor do POT Altura < 80
{
valorAlturaFinal = valorAlturaFinal - 1; // decrementa Valor Altura
if (valorAlturaFinal < 30) valorAlturaFinal = 30; // limita Valor Base mínimo até 30
delay (atraso); // atraso
}
myservoAltura.write(valorAlturaFinal); // comando PWM para o servomotor Altura
if (valorProfundidade > 95) // se Valor do POT Profundidade > 95
{
valorProfundidadeFinal = valorProfundidadeFinal + 1; // incrementa Valor Profundidade
if (valorProfundidadeFinal > 150) valorProfundidadeFinal = 150; // limita Valor Base a 150
delay (atraso); // atraso
}
if (valorProfundidade < 80) // se Valor do POT Profundiade < 80
{
valorProfundidadeFinal = valorProfundidadeFinal - 1; // decrementa Valor Profundidade
if (valorProfundidadeFinal < 30) valorProfundidadeFinal = 30; // limita Valor Base Prof a 30
delay (atraso); // atraso
}
myservoProfundidade.write(valorProfundidadeFinal); // comando PWM para o servo Profundidade
}
_________________________________________________________________________
Obs: Em algumas versões do SHIELD o pino correspondente ao AREF do arduino deve ser cortado no SHIELD, ele interfere no funcionamento.
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.
Nenhum comentário:
Postar um comentário