// para os carros #define vermelhoCar 13 #define amareloCar 12 #define verdeCar 8 #define buzzer 3 #define botao 2 #define ldr A0 //para os pedestres #define vermelhoPed 7 #define verdePed 4 int tempoVerdeCarro = 10000; int tempoAmarelo = 3000; void setup(){ pinMode(vermelhoCar, OUTPUT); pinMode(amareloCar, OUTPUT); pinMode(verdeCar, OUTPUT); pinMode(vermelhoPed, OUTPUT); pinMode(verdePed, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(botao, INPUT); pinMode(ldr, INPUT); Serial.begin(9600); } void loop(){ // o vermelhoCar inicializa com o valor LOW  //semaforo parte pedestres  if (digitalRead(vermelhoCar) == LOW) { digitalWrite(vermelhoCar, HIGH); digitalWrite(verdePed, HIGH); sonoro(); digitalWrite(verdePed, LOW); digitalWrite(vermelhoPed, HIGH); digitalWrite(vermelhoCar, LOW); digitalWrite(verdeCar, HIGH); } //controle do botao int tempo; bool pressionou = false; while (tempo < tempoVerdeCarro) { //ldr > 50 pouca luz // para verificar o valor do ldr na tela //Serial.println(analogRead(ldr)); if (( digitalRead(botao) || analogRead(ldr) > 50) && !pressionou) { tempo = tempo + 2000; pressionou = true; } else { tempo = tempo + 1000; } delay(1000); } //fim do controle do botao  digitalWrite(verdeCar, LOW); digitalWrite(amareloCar, HIGH); delay(tempoAmarelo); for (int y = 0; y <= 2; y++) { digitalWrite(amareloCar, LOW); delay(300); digitalWrite(amareloCar, HIGH); delay(300); } digitalWrite(amareloCar, LOW); digitalWrite(vermelhoPed, LOW); } void sonoro() { noTone(buzzer); for (int x = 1; x<=3; x++){ tone(buzzer,30); delay(1000); noTone(buzzer); delay(1000); } for (int x = 0; x<=3; x++){ tone(buzzer,30); delay(500); noTone(buzzer); delay(500); } }