#include<Servo.h>
Servo motor;
const int ledRojoPin = 10;
const int ledVerdePin = 11;
const int botonPin = 7;
const int BuzzerPin = 1;
int trig = 13;
int echo = 12;
int tiempo;
int distancia;
int estadoAnterior = HIGH;
bool semaforoActivo = false;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
motor.attach(9);
pinMode(ledRojoPin, OUTPUT);
pinMode(ledVerdePin, OUTPUT);
pinMode(botonPin, INPUT_PULLUP);
pinMode(BuzzerPin, OUTPUT);
}
void loop() {
int estadoBoton = digitalRead(botonPin);
if (estadoBoton == LOW && estadoAnterior == HIGH) {
semaforoActivo = !semaforoActivo;
if (semaforoActivo) {
digitalWrite(ledVerdePin, HIGH);
digitalWrite(ledRojoPin, LOW);
} else {
digitalWrite(ledVerdePin, LOW);
digitalWrite(ledRojoPin, HIGH);
}
}
digitalWrite(trig,HIGH);
delay(500);
digitalWrite(trig, LOW);
tiempo = pulseIn(echo,HIGH);
distancia = tiempo/58.2;
delay(500);
if(distancia <= 20)
{
motor.write(120);
tone(BuzzerPin, 100, 1000);
}
if(distancia > 20)
{
motor.write(0);
}
estadoAnterior = estadoBoton;
}