É um motor muito utilizado em aplicações para robótica. Ele apresenta movimentos proporcionais aos comandos indicados, controlando o giro e a posição, diferente da maioria dos motores. É um motor compacto, pesa apenas 9g e oferece um torque máximo de ~1.6kg. Acompanha ainda dois parafusos para fixação do servo, três cruzetas e um parafuso para fixação das cruzetas. Para sua alimentação possuem três fios de inteface, ao qual, dois servem para alimentação e o outro para recebimento de sinais do controle.
// Projeto: Garra controlada por potenciômetro
// Autor: André Silveira
// Data: 07/07/2019
#include "Servo.h"
Servo MeuServo; // Criar um Objeto Servo
int PinoPoten = A0; // Pino de conexão do potenciômetro
int PinoServo = 5; // Pino de conexão do potenciômetro
int angulo = 0;
void setup(){
MeuServo.attach(PinoServo); // Inicializa Servo Motor
pinMode(PinoPoten,INPUT); // Inicializa potenciômetro
}
void loop(){
angulo = analogRead(PinoPoten); // Lê o valor do Potenciometro
angulo = map(angulo, 0, 1023, 0, 180); // Mapeia o valor de 0 a 180 graus
MeuServo.write(angulo); // Repassa o angulo ao ServoWrite
delay(15); // Delay de 15ms para o Servo alcançar a posição
}
// Projeto: Controlando Micro Servo SG90 com Joystick
// Autor: André Silveira
// Data: 07/07/2019
#include "VarSpeedServo.h"
VarSpeedServo Servo01; // Cria objeto para controlar o servo 1
VarSpeedServo Servo02; // Cria objeto para controlar o servo 2
int pino_x = A4; // Pino ligado ao X do joystick
int pino_y = A5; // Pino ligado ao Y do joystick
int val_x; // Armazena valor do eixo X
int val_y; // Armazena valor do eixo Y
void setup(){
Servo01.attach(6, 1, 180); // Define porta a ser ligada ao servo 1
Servo02.attach(7, 1, 180); // Define porta a ser ligada ao servo 2
}
void loop() {
val_x = analogRead(pino_x); // Lê valor do eixo x do joystick
val_x = map(val_x, 0, 1023, 1, 180); // Converte valor lido para um valor entre 1 e 180 graus
Servo01.slowmove(val_x, 60); // Move servo base para a posicao
val_y = analogRead(pino_y); // Lê valor do eixo y do joystick
val_y = map(val_y, 0, 1023, 1, 180); // Converte valor lido para um valor entre 1 e 180 graus
Servo02.slowmove(val_y, 60); // Move servo base para a posicao
delay(30); // Aguarda movimentação do servo
}