Como Funciona o Servo SG90?
Um servo motor combina motor DC, redução e circuito de controlo. Recebe um sinal PWM e posiciona o eixo no ângulo correspondente (0° a 180°).
📌 Pinagem (fios)
| Fio | Cor típica | Ligação |
|---|---|---|
| Sinal | Laranja / Amarelo | Pino Digital (ex: 9) |
| VCC | Vermelho | 5V |
| GND | Castanho / Preto | GND |
⚠️O servo pode consumir até 500mA sob carga. Se o Arduino reiniciar ao mover o servo, alimenta-o pelo pino Vin ou por uma fonte externa de 5V.
Exercício 1 — Posição Fixa
ex1_servo_posicao.ino
#include <Servo.h>
Servo meuServo;
void setup() {
meuServo.attach(9); // Pino do servo
}
void loop() {
meuServo.write(0); // Vai para 0°
delay(1000);
meuServo.write(90); // Vai para 90°
delay(1000);
meuServo.write(180); // Vai para 180°
delay(1000);
}
Exercício 2 — Varredura Suave
ex2_servo_sweep.ino
#include <Servo.h>
Servo meuServo;
void setup() {
meuServo.attach(9);
}
void loop() {
// 0° → 180°
for (int pos = 0; pos <= 180; pos++) {
meuServo.write(pos);
delay(10); // Mais lento = mais suave
}
// 180° → 0°
for (int pos = 180; pos >= 0; pos--) {
meuServo.write(pos);
delay(10);
}
}
Exercício 3 — Controlo com Potenciómetro
ex3_servo_pot.ino
#include <Servo.h>
Servo meuServo;
const int POT = A0;
void setup() {
meuServo.attach(9);
}
void loop() {
int leitura = analogRead(POT); // 0–1023
int angulo = map(leitura, 0, 1023, 0, 180); // 0–180°
meuServo.write(angulo);
delay(15);
}