#include <Servo.h> // Incluimos libreria Servo.h
Servo Servo; // Nombramos al servo
int trig = 5; // Definimos el pin 5 como el pin echo del sensor ultrasónico
int echo = 6; // Definimos el pin 6 como el pin echo del sensor ultrasónico
int buzzerPin = 2; // Definimos el pin 2 como el pin del buzzer
int ledVerdePin = 11; // Definimos el pin 11 como el pin del LED verde
int ledRojoPin = 12; // Definimos el pin 12 como el pin del LED rojo
float duracion; // Creamos una variable (duracion)
float distancia; // Creamos una variable (distancia)
void setup() {
Serial.begin(9600); // Inicializar la comunicación serial a 9600 baudios
pinMode(5, INPUT); // Configurar el pin del sensor como entrada
pinMode(buzzerPin, OUTPUT); // Configurar el pin del buzzer como salida
pinMode(11, OUTPUT); // Configurar el pin del LED verde como salida
pinMode(12, OUTPUT); // Configurar el pin del LED rojo como salida
pinMode(trig, OUTPUT); // Configuramos el trig coomo salida
pinMode(echo, INPUT); // Configuramos el echo como entrada
digitalWrite(12, LOW); // Inicialmente el led rojo estara apagado
digitalWrite(11, LOW); // Inicialmente el led verde estara apagado
Servo.attach(9); // Pin del servo al pin 9
}
void loop() {
digitalWrite(trig, HIGH); // Encendemos el pin trig
delayMicroseconds(10); // Esperamos 10 microsegundos
digitalWrite(trig, LOW); // Apagamos el pin trig
duracion = pulseIn(echo, HIGH); // Medimos la duración del pulso en el pin echo
distancia = duracion / 58.2; // Convertimos la duración del pulso a distancia en centímetros
delayMicroseconds(10); // Esperamos 10 microsegundos
Serial.print("Distancia: "); // Imprimimos "Distancia: " en el monitor serial
Serial.print(distancia); // Imprimimos el valor de la distancia
Serial.println(" Cm"); // Imprimimos la unidad de la distancia
digitalWrite(trig, HIGH); // Encendemos el pin trig
delayMicroseconds(10); // Esperamos 10 microsegundos
if (distancia <= 20) { // Si la distancia es menor o igual a 20 cm se activara la funcion
Serial.println("Barrera Arriba"); // Imprimimos "Barrera Arriba" en el monitor serial
led_barrera_arriba(); // Activamos la funcion
Servo.write(90); // Movemos el servo a 90 grados (Barrera Arriba)
zumbador_barrera_arriba(); // Activamos la funcion
}
if (distancia > 20) { // Si la distancia es mayor a 20 cm se activara la funcion
Serial.println("Barrera Abajo"); // Imprimimos "Barrera Abajo" en el monitor serial
led_barrera_abajo(); // Actiamos la funciob
Servo.write(0); // Movemos el servo a 0 grados (Barrera Abajo)
zumbador_barrera_abajo(); // Activamos la funcion
}
}
void zumbador_barrera_arriba() { // Funcion del buzzer si la barrera esta arriba
tone(buzzerPin, 500); // Tono de 500 Hz en el buzzer
delay(200); // Esperamos 200 milisegundos
noTone(buzzerPin); // Apagamos el buzzer
delay(100); // Esperamos 100 milisegundos
}
void zumbador_barrera_abajo() { // Funcion del buzzer si la barrera esta abajo
tone(buzzerPin, 1000); // Tono de 1000 Hz en el buzzer
delay(200); // Esperamos 200 milisegundos
noTone(buzzerPin); // Apagamos el buzzer
delay(1000); // Esperamos 1000 milisegundos
}
void led_barrera_arriba() { // Funcion de los leds si la barrera esta arriba
digitalWrite(11, LOW); // Apagamos led Verde
digitalWrite(12, HIGH); // Encendemos led Rojo
delay(100); // Esperamos 1000 milisegundos
digitalWrite(12, LOW); // Apagamos led Rojo
delay(100); // Esperamos 1000 milisegundos
}
void led_barrera_abajo() { // Funcion de los leds si la barrera esta abajo
digitalWrite(12, LOW); // Apagamos el LED rojo
digitalWrite(11, HIGH); // Encendemos el LED verde
}