#include <ESP32Servo.h>
Servo servo1;
Servo servo2;
// Definindo os pinos de saída PWM para os servos
const int servoPin1 = 18; // Pino de controle para o servo 1
const int servoPin2 = 19; // Pino de controle para o servo 2
// Parâmetros de movimento
const float anguloInicial = 50.0;
const float anguloFinal = 150.0;
const float incremento = 12.5;
float anguloAtual1 = anguloInicial;
float anguloAtual2 = anguloInicial;
// Intervalo de tempo para cada incremento de 12,5 graus por hora (1 hora = 3600000 ms)
const unsigned long intervalo = 3600000; // 1 hora em milissegundos
unsigned long ultimoTempo = 0;
// Variável para contar as horas de operação
int horasDeOperacao = 0;
void setup() {
Serial.begin(115200);
// Anexando os servos aos pinos PWM
servo1.attach(servoPin1);
servo2.attach(servoPin2);
// Inicializando os servos na posição inicial
servo1.write(anguloAtual1);
servo2.write(anguloAtual2);
Serial.println("Movimento dos servos programado para iniciar às 8h e terminar às 16h.");
}
void loop() {
unsigned long tempoAtual = millis();
// Verifica se estamos no horário de movimento (8h a 16h)
if (horasDeOperacao < 8) {
// Verifica se o tempo necessário para o próximo movimento passou
if (tempoAtual - ultimoTempo >= intervalo) {
ultimoTempo = tempoAtual;
// Atualiza o ângulo dos servos
anguloAtual1 += incremento;
anguloAtual2 += incremento;
// Move os servos para o novo ângulo
servo1.write(anguloAtual1);
servo2.write(anguloAtual2);
// Incrementa a contagem de horas de operação
horasDeOperacao++;
Serial.print("Servo 1 posição: ");
Serial.print(anguloAtual1);
Serial.print(" | Servo 2 posição: ");
Serial.println(anguloAtual2);
}
} else {
// Se o ciclo de 8 horas terminou, aguardamos até o próximo dia
if (tempoAtual - ultimoTempo >= 86400000) { // 24 horas em milissegundos
ultimoTempo = tempoAtual;
horasDeOperacao = 0;
// Reiniciar os ângulos para o valor inicial para o próximo dia
anguloAtual1 = anguloInicial;
anguloAtual2 = anguloInicial;
servo1.write(anguloAtual1);
servo2.write(anguloAtual2);
Serial.println("Novo ciclo de 8 horas iniciado.");
}
}
}