#include <Servo.h>
Servo Servomotor;
const int ledRojoPin = 10;
const int ledVerdePin = 11;
const int botonPin = 7;
const int BuzzerPin = 1;
const int trigPin = 12; // Pin Trig del sensor ultrasónico
const int echoPin = 13; // Pin Echo del sensor ultrasónico
int estadoAnterior = HIGH;
bool semaforoActivo = false;
void setup() {
Servomotor.attach(9);
pinMode(ledRojoPin, OUTPUT);
pinMode(ledVerdePin, OUTPUT);
pinMode(botonPin, INPUT_PULLUP);
pinMode(BuzzerPin, OUTPUT);
pinMode(trigPin, OUTPUT); // Configura el pin Trig como salida
pinMode(echoPin, INPUT); // Configura el pin Echo como entrada
}
void loop() {
int estadoBoton = digitalRead(botonPin);
if (estadoBoton == LOW && estadoAnterior == HIGH) {
semaforoActivo = !semaforoActivo;
if (semaforoActivo) {
// Semáforo activado: Servo a 0 grados, LED verde encendido, LED rojo apagado
Servomotor.write(0);
digitalWrite(ledVerdePin, HIGH);
digitalWrite(ledRojoPin, LOW);
tone(BuzzerPin, 200, 2000); // Activar el zumbador
} else {
// Semáforo desactivado: Servo a 90 grados, LED verde apagado, LED rojo encendido
Servomotor.write(90);
digitalWrite(ledVerdePin, LOW);
digitalWrite(ledRojoPin, HIGH);
noTone(BuzzerPin); // Desactivar el zumbador
}
}
estadoAnterior = estadoBoton;
// Código para el sensor ultrasónico
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 30) { // Si la distancia es menor a 30 cm
// Aquí puedes agregar lo que quieras que suceda cuando el sensor detecte un objeto a menos de 30 cm
}
}