/*Semáforo!
G = verde(green), Y = amarelo(yellow), R = vermelho(red)
E = lado esquerdo, D = lado direito
exemplo: ledGE = led verde na esquerda
escuro = lux 8 ou menor
chuvoso = slideSwitch para a direita*/
const int ledGE = 13, ledYE = 12, ledRE = 14;
const int ledGD = 25, ledYD = 26, ledRD = 27;
const int pinoSW = 15, pinoLDR = 2;
bool ledVD1 = LOW, ledVM1 = LOW, ledVM2 = LOW;
bool slideSW = LOW;
int sinalLux = analogRead(pinoLDR);
void setup() {
Serial.begin(115200);
pinMode(ledGE, OUTPUT);
pinMode(ledYE, OUTPUT);
pinMode(ledRE, OUTPUT);
pinMode(ledGD, OUTPUT);
pinMode(ledYD, OUTPUT);
pinMode(ledRD, OUTPUT);
pinMode(pinoSW, INPUT);
pinMode(pinoLDR, INPUT);
}
void loop() {
ledVD1 = digitalRead(ledGE);
ledVM1 = digitalRead(ledRE);
ledVM2 = digitalRead(ledRD);
slideSW = digitalRead(pinoSW);
sinalLux = analogRead(pinoLDR);
if(ledVD1 == LOW && ledVM1 == LOW && ledVM2 == LOW){
digitalWrite(ledGE, HIGH);
digitalWrite(ledRD, HIGH);
}
semaforo(ledRD,ledYD);
delay(500);
semaforo(ledGE,ledRE);
delay(slideSW, sinalLux, 9000, 4500);
semaforo(ledYE,ledGE);
delay(500);
semaforo(ledRE,ledYE);
delay(500);
semaforo(ledGD,ledRD);
delay(slideSW, sinalLux, 12000, 6000);
semaforo(ledYD,ledGD);
delay(500);
}
void delay(bool slideSW, int sinalLux, int delayMax, int delayMin){
if(slideSW == true && sinalLux >= 3483){
delay(delayMax);}
else{ delay(delayMin);}
}
void semaforo(int led1, int led2){
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
}