#include <Servo.h> // Biblioteca para controlar o servo
// Definindo os pinos
const int trigPin = 9; // Pino de Trigger do sensor ultrassônico
const int echoPin = 10; // Pino de Echo do sensor ultrassônico
const int servoPin = 6; // Pino de controle do Servo
Servo meuServo; // Objeto para controlar o servo motor
long duracao;
int distancia;
int anguloServoAberto = 90; // Ângulo do servo quando há um objeto próximo
int anguloServoFechado = 0; // Ângulo do servo quando não há objeto
void setup() {
Serial.begin(9600); // Inicializa a comunicação serial
pinMode(trigPin, OUTPUT); // Definindo o pino Trigger como saída
pinMode(echoPin, INPUT); // Definindo o pino Echo como entrada
meuServo.attach(servoPin); // Conectando o servo ao pino
meuServo.write(anguloServoFechado); // Inicializa o servo na posição fechada
delay(1000); // Espera 1 segundo antes de começar
}
void loop() {
// Enviar o pulso para o sensor ultrassônico
digitalWrite(trigPin, LOW); // Garante que o pino Trigger está baixo
delayMicroseconds(2); // Pequeno atraso para estabilizar
digitalWrite(trigPin, HIGH); // Envia o pulso de Trigger
delayMicroseconds(10); // Mantém o pulso por 10 microssegundos
digitalWrite(trigPin, LOW); // Desliga o Trigger
// Calculando a distância do objeto
duracao = pulseIn(echoPin, HIGH); // Mede a duração do pulso no pino Echo
distancia = duracao * 0.0344 / 2; // Converte a duração para distância em cm
// Imprime a distância no monitor serial
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
// Verifica a distância e move o servo
if (distancia < 20) { // Se a distância for menor que 20 cm (ajuste conforme necessário)
meuServo.write(anguloServoAberto); // Move o servo para 90 graus
} else {
meuServo.write(anguloServoFechado); // Caso contrário, o servo volta para 0 graus
delay(2000); // Delay de 2 segundos antes de mover o servo de volta
}
delay(500); // Atraso entre as medições para evitar leituras rápidas demais
}