Você está na página 1de 8

FACULDADE EMPRESARIAL DE CHAPECÓ - UCEFF

CURSO: ENGENHARIA MECÂNICA

BRAÇO ROBÓTICO ARDUINO COM SERVO MOTOR E JOYSTICK

ELIAS ZAMBONI GOMES DE OLIVEIRA

CHAPECÓ/SC
2022
FACULDADE EMPRESARIAL DE CHAPECÓ - UCEFF
CURSO Engenharia Mecânica
PERÍODO 4.º Período
DISCIPLINA Projeto Arduino
COORDENADOR DE CURSO Profº. Fabiano Faller
DOCENTE Profª. Fabiano Faller

BRAÇO ROBÓTICO ARDUINO COM SERVO MOTOR E JOYSTICK

ELIAS ZAMBONI GOMES DE OLIVEIRA

CHAPECÓ/SC
2022
ROTEIRO DE AULA PRATICA

BRAÇO ROBÓTICO ARDUINO COM SERVO MOTOR E JOYSTICK

1. OBJETIVOS

O braço Robótico Arduino é um mecanismo desenvolvido para quem está iniciando


no ramo de automação de robôs, proporcionando diversas possibilidades de movimento
e ações nos mais diversos projetos. Comumente é utilizado em conjunto com
microcontroladores Raspberry Pi ou Arduino. Criado com o intuito de ser considerado
uma ferramenta de baixo custo e grande funcionalidade, ele deve ser montado junto de 4
Micro Servo Motores de 180º, responsáveis pelos movimentos executados pelo mesmo.
Comumente os Servos são conectados diretamente ao Arduino, porém neste caso como
trabalhamos com uma maior quantidade de servos, faremos uso de um drive controlador
capaz de alimentar e controlar os servos motores em questão sem reduzir a sua
capacidade e conseguindo suprir a corrente necessário por todos os equipamentos.

2. MATERIAIS

DESCRIÇÃO QUANTIDADE
Arduino uno 1
Arduino shield 1
Braço robótico
MDF 1
Joystick 2
Jumper 20

3. PROCEDIMENTO

1) Ligação Arduino / Arduino Shield

Apenas encaixar sobre o Arduino UNO.

2) Ligação Shield / Servo 1

SHIELD SERVO 1
PINO G11 MARRON
PINO V11 AMARELO
PINO S11 VERMELHO
3) Ligação Shield / Servo 2

SHIELD SERVO 2
PINO G10 MARRON
PINO V10 AMARELO
PINO S10 VERMELHO

4) Ligação Shield / Servo 3

SHIELD SERVO 3
PINO G5 MARRON
PINO V5 AMARELO
PINO S5 VERMELHO

5) Ligação Shield / Servo 1

SHIELD SERVO 4
PINO G3 MARRON
PINO V3 AMARELO
PINO S3 VERMELHO
4. PROGRAMAÇÃO

Após a montagem do circuito, iremos montar e compilar o programa. Onde


podemos encontrar na biblioteca (https://blog.arduinoomega.com/controlando-braco-
robotico-com-joystick/).

//Para usar a biblioteca VarSpeedServo


#include "VarSpeedServo.h"

//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(11); //Base, pino digital 11
servo2.attach(10); //Extensão, pino digital 10
servo3.attach(9); //Altura, pino digital 9
servo4.attach(6); //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(80);//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 = 80)
{
s4 = 80;
}
servo4.write(s4);
delay(50);
}

//Fechar a garra
if (val4 > 900)
{
s4 = s4 + 2;
if (s4 = 130)
{
s4 = 130;
}
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(":");
}

Você também pode gostar