unsigned long clique_tempo=0;
unsigned long botaopressionado=0;
int estadobotao=1;
int cont=0;
void setup(){
DDRD=1<<DDD7; //pino 7 para led 1
DDRB=1<<DDB0; //pino 8 para led 2
DDRB=1<<DDB1; //pino 9 para led 3
DDRD=DDRD &~(1<<DDD2); //pino 2 entrada para botao
PORTD=PORTD | 1<<PD2; //seta 1 para o pino 2
}
void loop(){
estadobotao=PIND & 1<<PD2; //faz a leitura do botao
bool estadobotao2=estadobotao!=0; //verifica se o botao ta pressionado
if(estadobotao==0 && clique_tempo==0){
clique_tempo=millis();
}
if(estadobotao2){ //verifica se o botão foi solto após ser apertado
clique_tempo=0;
}
if(estadobotao==0){ //verifica se o botão continua pressionado
botaopressionado=(millis()-clique_tempo);
if(botaopressionado>1000){ //verifica se o tempo é maior q 1seg para desligar todos os leds
PORTD=PORTD & ~(1<<PD7); //desliga o led do pino 7
PORTB=PORTB & ~(1<<PB1); //desliga o led do pino 8
PORTB=PORTB & ~(1<<PB0); //desliga o led do pino 9
cont=0;
delay(500);
}
else if(botaopressionado<=1){
delay(1);
cont++;
//ordem de acendimento dos leds
if(cont==1){
PORTD=PORTD & ~(1<<PD7); //desliga o led do pino 7
PORTB=PORTB & ~(1<<PB0); //desliga o led do pino 8
PORTB=PORTB | 1<<PB1; //liga o led do pino 9
delay(200);
}
if(cont==2){
PORTD=PORTD & ~(1<<PD7); //desliga o led do pino 7
PORTB=PORTB | 1<<PB0; //liga o led do pino 8
PORTB=PORTB & ~(1<<PB1); //desliga o led do pino 9
delay(200);
}
if(cont==3){
PORTD=PORTD | 1<<PD7; //liga o led do pino 7
PORTB=PORTB & ~(1<<PB0); //desliga o led do pino 8
PORTB=PORTB & ~(1<<PB1); //desliga o led do pino 9
cont=0;
delay(200);
}
}
}
}