// SERVO MOTOR
// O servo motor funciona bem a 5V, mas a esp32 tem no máximo
// 3,3V (funciona, mas não tão bem). O servo motor realiza 
// movimentos em um ângulo de 180°C (ele trabalha com ângulos
// em graus).

// *Mudar a cor do horn do servo motor no diagram.json
// para azul (encontrar na documentação).

// BIBLIOTECA PARA SERVO MOTOR:
// Library Manager -> + -> ESP32Servo -> importar

#include <ESP32Servo.h>

// Declarando uma variável do tipo servo:
Servo servo;
int pin_servo = 32;

void setup() {
  // Equivalente a fazer o pinMode para o servo motor
  servo.attach(pin_servo);

  // Definindo um ângulo inicial para o servo motor
  servo.write(90);

  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
}

void loop() {
  // Incrementando o ângulo do servo motor gradualmente:
  for(int i = 90; i <= 180; i++) {
    servo.write(i);
    // delay para tornar o movimento visível
    delay(15);
  }
  // PROJETO: para simular a cancela, coloca-se um delay 
  // (simulando o tempo que ficaria aberta para um carro 
  // passar).
  delay(100);
  // Decrementando o ângulo do servo motor:
  for(int i = 180; i >= 90; i--) {
    servo.write(i);
    // delay para tornar o movimento visível
    delay(15);
  }
}