Os servomotores, diferentemente dos motores CC comuns, possuem uma entrada extra para controlar sua rotação. Eles recebem um ângulo e se movimentam para ficar de acordo com a informação recebida. O Arduino já possui uma biblioteca própria para trabalhar com servomotores, a Servo.h. Nesse tutorial, faremos uma breve introdução a ela.

Pinagem

No plug do fio marrom, ligaremos no GND da Arduino, no do fio vermelho, ligaremos no 5V do Arduino e, por último, ligaremos o laranja em algum dos pinos digitais. No caso, ligamos no pino digital 3 do Arduino

Fios do Servomotor

Após as ligações, a placa ficará parecida com a figura abaixo:

Servomotor ligado ao Arduino

Código

Código usado para mexer no servomotor:

#include "Servo.h"

Servo motor;

void setup ()
{
  Serial.begin(9600);
  motor.attach(3);
}

void loop ()
{
  motor.write(Serial.parseInt());
  delay(1000);
  motor.write(90);
  delay(1000);
}

O método attach do Servo é usado para indicar qual entrada do Arduino será usada. já o método write indica para qual ângulo ele deve se deslocar. No primeiro write, pegamos o deslocamento pela entrada padrão. Note que, se nada for digitado, ele se deslocará para a posição 0 e depois para a posição 90. Note também que o write não indica quantos graus ele deve se deslocar e sim para qual grau ele deve ir. Isto é, se você usa write(90) e depois write(90) ele irá se mover uma vez e depois ficará parado, pois já está na posição 90. Além disso, há um grau máximo que o servomotor pode atingir, que varia de servomotor para servomotor e, caso um write seja dado com um grau superior ao máximo, ele se irá somente até esse grau máximo.

A documentação da biblioteca Servo, junto com exemplos de uso das funções, está disponível em http://arduino.cc/en/reference/servo. Para outros exemplos também pode ser consultado no livro Arduino Cookbook da O’Reilly.