// Inclui a biblioteca para controle dos servos
#include <Servo.h>
// Define os pinos para cada componente
const int PINO_BOTAO = 2;
const int PINO_LED = 7;
const int PINO_SERVO_1 = 3;
const int PINO_SERVO_2 = 5;
const int PINO_SERVO_3 = 9;
// Cria os objetos para cada servo
Servo servo_1;
Servo servo_2;
Servo servo_3;
// Variáveis para controlar o estado
int posicaoAtual = 90; // Guarda a posição atual dos servos (90 ou 0)
int estadoBotaoAnterior = HIGH; // Guarda o último estado lido do botão
void setup() {
// Configura o pino do LED como saída
pinMode(PINO_LED, OUTPUT);
// Configura o pino do botão como entrada com pull-up
pinMode(PINO_BOTAO, INPUT_PULLUP);
// Anexa os servos aos seus pinos
servo_1.attach(PINO_SERVO_1);
servo_2.attach(PINO_SERVO_2);
servo_3.attach(PINO_SERVO_3);
// Move todos os servos para a posição inicial
servo_1.write(posicaoAtual);
servo_2.write(posicaoAtual);
servo_3.write(posicaoAtual);
}
void loop() {
// Lê o estado atual do botão
int estadoBotao = digitalRead(PINO_BOTAO);
// Verifica se o botão FOI pressionado (transição de HIGH para LOW)
if (estadoBotaoAnterior == HIGH && estadoBotao == LOW) {
// Pisca o LED para indicar que o comando foi recebido
digitalWrite(PINO_LED, HIGH);
delay(100); // Duração do pisca
digitalWrite(PINO_LED, LOW);
// Alterna a posição alvo
if (posicaoAtual == 90) {
posicaoAtual = 0;
} else {
posicaoAtual = 90;
}
// Comanda os servos para a nova posição
servo_1.write(posicaoAtual);
servo_2.write(posicaoAtual);
servo_3.write(posicaoAtual);
}
// Atualiza o estado anterior do botão para a próxima verificação
estadoBotaoAnterior = estadoBotao;
// Pequeno delay para estabilizar a leitura do botão (debounce)
delay(50);
}