#include <Servo.h>
const int botonAbierto = 2;
const int botonSeguridad = 3;
const int barreraCerrada = 5;
const int barreraAbierta = 6;
const int barreraObstaculo = 8;
const int anguloCerrado = 0;
const int anguloAbierto = 90;
Servo laBarrera;
void setup() {
pinMode(botonAbierto, INPUT);
pinMode(botonSeguridad, INPUT);
pinMode(barreraCerrada, OUTPUT);
pinMode(barreraAbierta, OUTPUT);
pinMode(barreraObstaculo, OUTPUT );
laBarrera.attach(9);
Serial.begin(9600);
abajoBarrera();
}
void loop() {
if(digitalRead(botonAbierto) == LOW)
{
Serial.println("Barrera Levantada...");
arrivaBarrera();
delay(4000);
sensorActivo();
Serial.println("Obstaculo no detectado, cerrando barrera...");
abajoBarrera();
}
}
void arrivaBarrera()
{
laBarrera.write(anguloAbierto);
digitalWrite(barreraAbierta, HIGH);
digitalWrite(barreraCerrada, LOW);
digitalWrite(barreraObstaculo, LOW);
}
void abajoBarrera()
{
laBarrera.write(anguloCerrado);
digitalWrite(barreraAbierta, LOW);
digitalWrite(barreraCerrada, HIGH);
digitalWrite(barreraObstaculo, LOW);
}
void sensorActivo()
{
while(digitalRead(botonSeguridad) == LOW)
{
Serial.println("ALERTA: Obstaculo detectado...");
alerta(4,200);
}
}
void alerta(int repeticiones, int velocidad)
{
for (int i = 0; i < repeticiones; i++)
{
digitalWrite(barreraObstaculo, HIGH);
delay(velocidad);
digitalWrite(barreraObstaculo, LOW);
delay(velocidad);
}
}