Você está aqui: Início » Robótica, Eletrônica e Afins » Eletrônica » Arduino

Joystick controlando 3 servomotores no Arduino

 

Olá pessoal, depois de mostrar como ligar um joystick a um Arduino e ler as posições X, Y e Z agora vamos começar com uma aplicação prática de utilização do joystick no Arduino, que é controlar os movimentos de três servomotores. O papel do Arduino nesse projeto é transformar os movimentos do Joystick em movimentos nos servomotores. Um servomotor é um tipo motor que permite o controle da sua posição angular, ou seja, você pode enviar um comando para que ele gire o seu eixo posicionando seu braço a 180º, ou 10º ou 90º. Os servomotores usados nesse projeto podem se movimentar de 0º até 180º graus. O projeto joystick controlando três servomotores é muito interessante na robótica, pois ele permite por exemplo a construção de braços robóticos e olhos robóticos além de outras coisas.

Joystick controlando 3 servomotores

Como Funciona

Cada eixo do joystick irá controlar os movimentos de um dos servomotores. Os movimentos de um joystick são feitos dentro dos eixos X, Y e Z. No eixo X estão os movimentos para esquerda e direita, no eixo Y estão os movimentos para cima e para baixo, e o eixo Z no caso desse joystick é um botão liga/desliga, acionado pelo pressionamento da alavanca.

Ao movimentar a alavanca do joystick pelo eixo X um dos servomotores irá movimentar seu braço conforme o movimento do joystick. Ao movimentar a alavanca do joystick pelo eixo Y um outro servomotor irá movimentar seu braço conforme a movimentação do joystick. Ao movimentar em diagonais do eixo X e Y dois servomotores irão movimentar seus braços conforme o movimento nas diagonais do joystick. E ao pressionar o botão, eixo Z,  um servo motor irá de 0º até 180º. Os movimentos dos servomotores podem ser independentes ou podem ser em conjunto, isso depende da movimentação do joystick.

Para fazer o circuito com o joystick controlando os três servomotores você vai precisar de:

  • 1 Arduino,
  • 1 joystick,
  • 3 servomotores,
  • 1 protoboard pequena,
  • fios coloridos,
  • 1 suporte para 4 pilhas pequenas,
  • 4 pilhas pequenas.

Para alimentar o Arduino você pode usar uma bateria de 9 volts ou ligá-lo a porta USB do seu computador.

Esquema do circuito eletrônico

E segue abaixo o esquema de montagem do seu circuito para controlar 3 servomotores com um joystick e Arduino.

Esquema braço robótico. Joystick com 3 servomotores

Explicando o esquema eletrônico e mais alguns detalhes do circuito. 

O Arduino é o cérebro do nosso circuito, ele vai ler os movimentos dos eixos X, Y e Z do Joystick e transformar esses movimentos em movimentos nos servomotores. Cada servomotor está ligado a um eixo do joystick, e cada servomotor é capaz de se movimentar independentemente ou em conjunto com os outros, isso depende do movimento feito no joystick.

O joystick será alimentado pelo Arduino, então todos os pinos VCC do joystick (alimentação positiva) serão ligados ao pino 5V do Arduino. Os pinos GND (terra) do joystick serão todos ligados ao GND do Arduino.

S-K, pino do eixo Z, será ligado ao pino digital 2 do Arduino através do fio verde.

O pino S-Y do joystick, eixo Y, será ligado ao pino analógico A1 do Arduino através do fio amarelo. O pino S-X do joystick, eixo X, será ligado ao pino analógico A0 do arduino através do fio azul. O pino S-K do joystick, eixo Z, será ligado ao pino digital 2 do Arduino através do fio verde. O eixo Z do joystick na verdade é um botão, é um pseudo-eixo que só tem dois estados, ligado ou desligado, por isso o servomotor ligado a esse pseudo-eixo também só se move para duas posições, 0 graus e 180 graus. O servomotor do eixo Z seria adequado para se ligar na "mão" que abre e fecha de um braço robótico, ou nas pálpebras, que abrem e fecham, de olhos robóticos para fazer o movimento de piscar os olhos.

Os servomotores terão uma alimentação independente, através de 4 pilhas pequenas, por dois motivos, primeiro que não é recomendado ligar motores diretamente no Arduino pois pode danificá-lo e segundo porque ele não teria potência o suficiente para mover esses três servomotores. A ligação dos fios de controle dos servomotores, no caso o laranja, foi feita da seguinte forma:

  • servomotor do eixo X está ligado ao pino digital 3 do Arduino,
  • servomotor do eixo Y está ligado ao pino digital 5 do Arduino,
  • servomotor do eixo Z está ligado ao pino digital 6 do Arduino.

Note que os pinos digitais 3, 5 e 6 do Arduino Uno R3 são PWM. Você pode utilizar outros pinos, desde que também sejam PWM e que as devidas alterações no código fonte deste projeto sejam feitas. Os pinos PWM são os que tem um til (~).

Pinos PWM do Arduino

O servomotor que usei nesse circuito é o TG9e da Turnigy, que não é muito potente mas tem um bom custo/benefício, e é capaz de movimentar coisas leves como você pode ver no post Guincho robótico de palitos de picolé. Ele possui três fios, um marrom que é o negativo, um vermelho que é o positivo e um laranja que o controle de posição.

Código fonte

Segue o código fonte do projeto Joystick controlando três servomotores no Arduino, todo comentado. É só copiar e colar na IDE do Arduino, compilar e fazer o upload.

/*
Projeto Arduino - Como ligar um joystick no Arduino

----------------------------------------
--=<| www.ComoFazerAsCoisas.com.br |>=--
----------------------------------------
*/

//incluindo biblioteca para controle do servomotor
#include "Servo.h"

//Criando um objeto da classe Servo
Servo servoMotorObjX;
Servo servoMotorObjY;
Servo servoMotorObjZ;

//pino digital (PWM) associado ao controle do servomotor
int const servoMotorX = 3;
int const servoMotorY = 5;
int const servoMotorZ = 6;

//Variável que armazena a posição lida
//nos eixos do joystick
int joystickX = 0;
int joystickY = 0;
int joystickZ = 0;

//Atribuindo o pino analógico A0 a variável eixoX
int eixoX = A0;

//Atribuindo o pino analógico A1 a variável eixoY
int eixoY = A1;

//Atribuindo o pino digital 2 a variável eixoZ
int eixoZ = 2;

void setup() {
  //associando o pino digital de controle do
  //servo ao objeto da classe Servo
  servoMotorObjX.attach(servoMotorX);
  servoMotorObjY.attach(servoMotorY);
  servoMotorObjZ.attach(servoMotorZ);

  //Definindo eixoZ como um pino de entrada
  pinMode(eixoZ, INPUT);
  
  servoMotorObjX.write(90);
  servoMotorObjY.write(90);
  servoMotorObjY.write(180);

  //Ativando o Serial Monitor que exibirá os
  //valores lidos no Joystick
  Serial.begin(9600);
}

void loop() {
  //Lê o valor do eixoX
  joystickX = analogRead(eixoX);

  //Lê o valor do eixoY
  joystickY = analogRead(eixoY);

  //Lê o valor do eixoZ
  joystickZ = digitalRead(eixoZ);

  imprimeEixos();     

  //mapeando o valor lido no joystick para a escala do
  //servo (entre 0 e 180)
  joystickX = map(joystickX, 0, 1023, 0, 180);
  joystickY = map(joystickY, 0, 1023, 0, 180);
  joystickZ = map(joystickZ, 0, 1, 0, 180);   

  //definindo o valor/posição do servomotor
  servoMotorObjX.write(joystickX);
  servoMotorObjY.write(joystickY);
  servoMotorObjZ.write(joystickZ);

  //espera 20 milisegundos.
  delay(20);
}

//Este método é responsável apenas por imprimir no
//Serial Monitor os valores dos eixos X, Y e Z.
void imprimeEixos() {
  //imprime o valor do eixoX
  Serial.print("  X=");
  Serial.print(joystickX);

  //imprime o valor do eixoY
  Serial.print("   Y=");
  Serial.print(joystickY);

  //imprime o valor do eixoZ
  Serial.print("   Z=");
  Serial.println(joystickZ);
}

E abaixo segue o vídeo da montagem do projeto joystick controlando três servomotores no Arduino, com todos os detalhes, e também a demonstração do seu funcionamento, veja!

Então é isso pessoal, e para fechar com chave de ouro e demonstrar o seu apoio ao nosso esforço dê um gostei no vídeo, compartilhe, adicione aos favoritos e inscreva-se no nosso canal do YouTube. e também não deixe de visitar os nossos diversos projetos em Arduino. Valeu um grande abraço e até breve!

Veja Mais

Como ligar um joystick no Arduino e ler as posições X, Y e Z
Como ligar um joystick no Arduino e ler as posições X, Y e Z
Como montar o seu Arduino na protoboard
Como montar o seu Arduino na protoboard
Como fazer um Alarme com Arduino e sensor de movimentos PIR.
Como fazer um Alarme com Arduino e sensor de movimentos PIR.
Arduino com sensor de obstáculos ultrasônico HC-SRO4
Arduino com sensor de obstáculos ultrasônico HC-SRO4
Guincho robótico de palito de picolé com arduino e servomotores. Como Fazer.
Guincho robótico de palito de picolé com arduino e servomotores. Como Fazer.
Arduino com servomotor robótico e display LCD
Arduino com servomotor robótico e display LCD
Controlando um servomotor com potenciômetro no arduino.
Controlando um servomotor com potenciômetro no arduino.
Motor CC/DC no Arduino e ponte H dupla. Controle de velocidade e sentido da rotação
Motor CC/DC no Arduino e ponte H dupla. Controle de velocidade e sentido da rotação
Controlando a velocidade de um motor CC no Arduino com potenciômetro.
Controlando a velocidade de um motor CC no Arduino com potenciômetro.
 

Tops do momento

Como calcular o resistor adequado para um LED.Como calcular o resistor adequado para um LED.
Como fazer uma mini bomba de água caseiraComo fazer uma mini bomba de água caseira
Como fazer um mini gerador de energia eólica - versão 2.0Como fazer um mini gerador de energia eólica - versão 2.0
Projeto Arduino com display LCD.Projeto Arduino com display LCD.
Projeto Arduino, led com botão liga desliga.Projeto Arduino, led com botão liga desliga.
Como fazer um mini gerador de energia eólica - versão 1.0Como fazer um mini gerador de energia eólica - versão 1.0
Como Fazer um Circuito Pisca LEDComo Fazer um Circuito Pisca LED
Mini gerador de energia manual movido a manivelaMini gerador de energia manual movido a manivela

Destaques

Como fazer uma mini balestra pistola de palitos de picoléComo fazer uma mini balestra pistola de palitos de picolé
Como fazer uma lanterna de LEDs no palitoComo fazer uma lanterna de LEDs no palito
Como fazer um avião bimotor de palitos de picoléComo fazer um avião bimotor de palitos de picolé
Como fazer uma mini bomba de água caseiraComo fazer uma mini bomba de água caseira
Circuito simples que controla a velocidade de um motorzinho. Como fazer!Circuito simples que controla a velocidade de um motorzinho. Como fazer!
Como ligar um joystick no Arduino e ler as posições X, Y e ZComo ligar um joystick no Arduino e ler as posições X, Y e Z
Circuito simples que controla o sentido de rotação de um motorzinho.Circuito simples que controla o sentido de rotação de um motorzinho.
Como montar o seu Arduino na protoboardComo montar o seu Arduino na protoboard
 
Como Fazer as Coisas no Facebook Como Fazer as Coisas no G+ Como Fazer as Coisas no Twitter Como Fazer as Coisas no YouTube Como Fazer as Coisas no Pinterest Feed Como Fazer as Coisas