domingo, 14 de outubro de 2012

[ Tutorial ] Servo motor com Joystick

Material necessário: 
  • Modulo Joystick Keyes
  • Arduino UNO ( ou outro modelo )
  • BreadBoard ( Qualquer tamanho )
  • Cabos e Jumper para realizar as ligações

Passo a passo:

O pino responsável pelo Eixo Y deve ser ligado em uma porta analogica do Arduíno;
O pino "-" ou GND deve corresponder a porta GND do UNO;
O pino "+" ou PWR deve ser conectado a porta 5V;
O Eixo X não sera utilizado, portanto não há necessidade de conecta-lo;
O pino B ou Button, é utilizado para o botão de pressão do Joystick, nesse projeto não há necessidade de usar-lo;



Sketch: 

#include <Servo.h>   //biblioteca para controle de servo motores
Servo servo1;   // nomeia uma variável para ser servo motor
int port;   // variavel que recebera dados do joystick

void setup(){
  servo1.attach(7);   //diz que o servo1 esta conectado a porta digital 7
  servo1.write(90);   //servo1 começa em posição 90 graus
}

void loop(){
  port = analogRead(5);   //port recebe dados do joy
  port = map(port,0,1023,0,180);   //a rotina map, mapeia os dados (Quase uma regra de 3)
  servo1.write(port);   // servo1 se movimenta com os dados já mapeados do joystick
  delay(15);   //um pequeno atraso na progamação para tornar o controle "mais humano" 
}


Observação: Note que a função analogRead retorna valores de 0 a 1023 e o nosso servo se movimenta de 0 a 180 graus (alguns de 0 a 360), servo motores apenas são controlados pela quantidade de graus, portanto deve se diminuir o intervalo gerado por analogRead, nesses casos deve ser utilizada a função map.


Resultado final: