#include <Arduino.h>
#define ledRojo 6
#define ledVerde 7
#define ledAmbar 5
#define botonAmbar 8
#define botonRojo 9
#define botonVerde 10
int estadoAnteriorBotonAmbar = LOW;
int estadoAnteriorBotonRojo = LOW;
int estadoAnteriorBotonVerde = LOW;
bool estadoLedAmbar = LOW;
bool estadoLedRojo = LOW;
bool estadoLedVerde = LOW;
void setup() {
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledAmbar, OUTPUT);
pinMode(botonAmbar, INPUT);
pinMode(botonRojo, INPUT);
pinMode(botonVerde, INPUT);
}
void loop() {
int lecturaBotonVerde = digitalRead(botonVerde);
int lecturaBotonRojo = digitalRead(botonRojo);
int lecturaBotonAmbar = digitalRead(botonAmbar);
if (lecturaBotonVerde != estadoAnteriorBotonVerde) {
if (lecturaBotonVerde == HIGH) {
if (estadoLedVerde == LOW) {
estadoLedVerde = HIGH;
digitalWrite(ledVerde, HIGH);
} else {
if (estadoLedRojo == LOW && estadoLedAmbar == LOW) {
estadoLedVerde = LOW;
digitalWrite(ledVerde, LOW);
}
}
}
}
if (lecturaBotonRojo != estadoAnteriorBotonRojo) {
if (lecturaBotonRojo == HIGH) {
if (estadoLedRojo == LOW && estadoLedVerde == HIGH) {
estadoLedRojo = HIGH;
digitalWrite(ledRojo, HIGH);
} else {
if (estadoLedAmbar == LOW) {
estadoLedRojo = LOW;
digitalWrite(ledRojo, LOW);
}
}
}
}
if (lecturaBotonAmbar != estadoAnteriorBotonAmbar) {
if (lecturaBotonAmbar == HIGH) {
if (estadoLedAmbar == LOW && estadoLedRojo == HIGH) {
estadoLedAmbar = HIGH;
digitalWrite(ledAmbar, HIGH);
} else {
estadoLedAmbar = LOW;
digitalWrite(ledAmbar, LOW);
}
}
}
estadoAnteriorBotonVerde = lecturaBotonVerde;
estadoAnteriorBotonRojo = lecturaBotonRojo;
estadoAnteriorBotonAmbar = lecturaBotonAmbar;
}