Bom dia pessoal,estou começando a pegar conceitos em c++ agora,estou com um problema.Criei um código para simular um semáforo de carros e de pedestre,porém passarei a seguinte descrição do problema:Agora o semáforo terá opção de pânico. Caso o botão seja acionado 6 vezes consecutivas,o semáforo para o carro independente da luz que esteja, irá automaticamente para o amarelo e em seguida, para o vermelho. E o semáforo do pedestre irá para a luz verde assim que o led vermelho estiver aceso no semáforo dos carros.Segue o código:
//projeto 4-Semáforo interativo
int carRed = 12;//Definindo os leds dos carros
int carYellow =11;
int carGreen =10;
int pedRed =9; //Definindo os leds dos pedestres
int pedGreen =8;
int button =2; //pino do botão
int crossTime = 10000; // Tempo de travessia
unsigned long changeTime; //Tempo que o botão foi pressionado pela ultima vez
void setup(){
pinMode(carRed,OUTPUT);
pinMode(carYellow,OUTPUT);
pinMode(carGreen,OUTPUT);
pinMode(pedRed,OUTPUT);
pinMode(pedGreen,OUTPUT);
pinMode(button,IMPUT);
digitalWriter(carGreen,HIGH);
digitalWriter(pedRed,HIGH);
}
void loop(){
int state = digitalRead(button);//Verifica se o botão foi pressionado e se faz mais de 5 segs desde a ultima vez
if(state==HIGH&&(millis()-changeTime)>5000){
// chama a função que altera as luzes
delay(4000);
changeLights();
}
}
void changeLights(){
digitalWrite(carGreen,LOW); //Apaga luz verde
digitalWrite(carYellow,HIGH); // Ascende luz amarela
delay(4000);
digitalWrite(carYellow,LOW); //Apaga luz amarela
digitalWrite(carRed,HIGH); // Ascende luz vermelha
digitalWrite(pedRed,LOW); //Apaga luz vermelha do pedestre
digitalWrite(pedGreen,HIGH); //Acende luz verde pedestre
delay(crossTime); //Aguarda crossTime
//Pisca pedGreen
for(int x=0;x<10;x++){
digitalWrite(pedGreen,HIGH);
delay(250);
digitalWrite(pedGreen,LOW);
delay(250);
}
digitalWrite(pedRed,HIGH); //Acende luz vermelha pedestre
digitalWrite(carRed,LOW); //Apaga luz vermelha carro
digitalWrite(carGreen,HIGH); //Acende luz verde carro
changeTime = millis();
}