Início›Servo Motor
⬤ Motor Driver · Servo

🦾 Servo Motor

⏱️ 25 min📚 Servo · PWM 50 Hz · Posição angular · Potenciómetro

Nesta página

🔬 Como Funciona um Servo

Um servo é um sistema de malha fechada com motor DC + caixa redutora + potenciómetro interno. Aceita PWM a 50 Hz: pulso de 1 ms → 0°, 1.5 ms → 90°, 2 ms → 180°.

PulsoÂnguloComando
~1 000 µs0°servo.write(0)
~1 500 µs90° (centro)servo.write(90)
~2 000 µs180°servo.write(180)

🔌 Pinagem

D9Servo 1 — PWM 50 Hz
D10Servo 2 — PWM 50 Hz
5V / GNDAlimentação — atenção à corrente de pico
⚠️
Dois servos SG90 em simultâneo podem consumir até 1A. Se o Arduino reiniciar, usa fonte externa de 5V para alimentar os servos (GND comum com o Arduino).

💻 Varredura 0° a 180°

servo_basico.ino
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);
Servo sv;
int ultAng = -1;

void mostrarAng(int a) {
  if(a == ultAng) return;
  lcd.setCursor(0,1); lcd.print("Angulo: ");
  lcd.print(a); lcd.print(" graus  ");
  ultAng = a;
}

void setup() {
  lcd.init(); lcd.backlight();
  sv.attach(9); sv.write(90);
  lcd.setCursor(0,0); lcd.print("Servo D9 — Varred.");
}

void loop() {
  for(int a=0; a<=180; a+=2) { sv.write(a); mostrarAng(a); delay(15); }
  for(int a=180; a>=0; a-=2) { sv.write(a); mostrarAng(a); delay(15); }
}

🎛️ Controlo por Potenciómetro

servo_pot.ino
void loop() {
  int raw = analogRead(A0);
  int ang = map(raw, 0, 1023, 0, 180);
  sv.write(ang);
  lcd.setCursor(0,1); lcd.print("Ang: "); lcd.print(ang); lcd.print(" graus  ");
  lcd.setCursor(0,2); lcd.print("Raw: "); lcd.print(raw);  lcd.print("      ");
  delay(20);
}

📋 Sequência de Posições

servo_seq.ino
struct Pos { int ang; int ms; const char* nome; };
const Pos seq[] = {
  {  0, 800, "Fechado    "},
  { 45, 600, "Ajar       "},
  { 90, 1200,"Meio aberto"},
  {180, 800, "Aberto     "}
};
void loop() {
  for(auto& p : seq) {
    sv.write(p.ang);
    lcd.setCursor(0,1); lcd.print(p.nome);
    lcd.setCursor(0,2); lcd.print(p.ang); lcd.print(" graus  ");
    delay(p.ms);
  }
}

🏆 Para ir mais longe

PR.FT9_5 · LCD 20×4 · L293D Motor Driver · Arduino UNO Rev3 · Início · led.dge.medu.pt