//Avenida 1
#define R1 3
#define Y1 4
#define G1 5
#define PB_1 8
#define PB_2 9
#define PB_3 10
#define PB_4 11
#define PB_5 12
#define PB_6 13
//Avenida 2
#define R2 0
#define Y2 1
#define G2 2
#define PB_7 8
#define PB_8 9
#define PB_9 10
#define PB_10 11
#define PB_11 12
#define PB_12 13
int sumCarros = 0;
int greenTime = 0;
void setup() {
//LEDS
pinMode(R1,OUTPUT);
pinMode(Y1,OUTPUT);
pinMode(G1,OUTPUT);
pinMode(R2,OUTPUT);
pinMode(Y2,OUTPUT);
pinMode(G2,OUTPUT);
//PUSHBUTTONS
pinMode(PB_1,INPUT);
pinMode(PB_2,INPUT);
pinMode(PB_3,INPUT);
pinMode(PB_4,INPUT);
pinMode(PB_5,INPUT);
pinMode(PB_6,INPUT);
pinMode(PB_7,INPUT);
pinMode(PB_8,INPUT);
pinMode(PB_9,INPUT);
pinMode(PB_10,INPUT);
pinMode(PB_11,INPUT);
pinMode(PB_12,INPUT);
}// setup
void loop() {
//Avenida 1
//Calcula tiempo en verde dependiendo de la cantidad de carros en avenida 1
sumCarros = 0;
sumCarros = digitalRead(PB_1) + digitalRead(PB_2) + digitalRead(PB_3) + digitalRead(PB_4) + digitalRead(PB_5) + digitalRead(PB_6);
greenTime = ( (sumCarros * 3) + 20 ) * 1000;
//Prende en verde avenida 1 y rojo avenida 2
digitalWrite(G1,HIGH);
digitalWrite(Y1,LOW);
digitalWrite(R1,LOW);
digitalWrite(G2,LOW);
digitalWrite(Y2,LOW);
digitalWrite(R2,HIGH);
delay(greenTime);
//Avenida 1 en amarilo
digitalWrite(G1,LOW);
digitalWrite(Y1,HIGH);
delay(5000);
//Avenida 2
//Calcula tiempo en verde dependiendo de la cantidad de carros en avenida 2
sumCarros = 0;
sumCarros = digitalRead(PB_7) + digitalRead(PB_8) + digitalRead(PB_9) + digitalRead(PB_10) + digitalRead(PB_11) + digitalRead(PB_12);
greenTime = ( (sumCarros * 3) + 20 ) * 1000;
//Prende en verde avenida 2 y rojo avenida 2
digitalWrite(G1,LOW);
digitalWrite(Y1,LOW);
digitalWrite(R1,HIGH);
digitalWrite(G2,HIGH);
digitalWrite(Y2,LOW);
digitalWrite(R2,LOW);
delay(greenTime);
//Avenida 2 en amarilo
digitalWrite(G2,LOW);
digitalWrite(Y2,HIGH);
delay(5000);
}// loop