Comando para acender led em arduino em c++

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();
    	
    	
    	
    	
    	
    	
    }

qual a sua dificuldade?

Bom dia pec,quero colocar um laço para quando apertar o botão por 6 vezes automaticamente o led amarelo acende e vai para o vermelho,liberando o acesso para os pedestres,fiz esse laço:
// Laço para apertar o botão por 6 vezes
for(int button=0;button<6;button++){
digitalWrite(carYellow,HIGH);
delay(250);
digitalWrite(carRed,HIGH);
delay(250);
digitalWrite(pedGreen,HIGH);
delay(250);
digitalWrite(pedGreen,LOW);
delay(250);

Bom, acho que entendi a sacada, primeiro vou te passar algumas boas práticas do mapeamento de Hardware, no lugar de utilizar variáveis para armazenar as suas I/O, procure utilizar a diretiva #define porta numpino.
Segundo para esse cenário, é interessante utilizar algumas funções do Arduino e alguns benefícios do micro-controlador, no caso as interrupções, nesse link você encontra a sintaxe e as portas de cada Arduino que possuem interrupções: https://www.arduino.cc/en/Reference/AttachInterrupt.
Basicamente você deverá criar uma função que incrementara um contador até 6 cada vez que a interrupção for acionada, e quando chegar a 6 você poderá chamar a função que muda o semáforo. Porém, você deve definir um tempo limite para que o seu contador reinicie, assim você não corre o risco de apertar 5x, parar e na próxima vez que for apertado o semáforo ativar o modo pânico.

Fala felipefschwade, bem lembrado viu !!!
Interrupção nos microcontroladores e’ sempre uma ótima solução.
Já usei muito na velhinha familia do 8051 e no Arduino e’ mais facil ainda.
paulo9 , não ignora esse recurso da interrupção, pois a logica da programação fica
mais simples, mais entendível e com certeza consumirá menos recursos.

1 curtida