Tempo para acender um led

Estou fazendo um projeto só que estou tendo dificuldades. Meu problema é: ao apertar um botão um led acende, apos 30 segundos desse led aceso um outro led dever aceso.

  • Dê o comando para o primeiro LED acender.
  • Use um delay de 30000.
  • Apague o primeiro LED e acenda o segundo.

Se fosse a ti esquecia o delay porque eventualmetne vais querer fazer algo mais e o programa não vai funcionar.

Faz algo deste género:

//fora da loop()
unsigned long temporizacao = 0;


unsigned char inicio = digitalRead(pinoBotao); 
unsigned char contando = 0; 

if (inicio == 1) { //botao pressionado
   temporizacao = millis(); 
   digitalWrite(LED1, HIGH); 
   contando = 1; 
}

if (contando == 1 && (millis() - temporizacao > 30000)) { //passaram 30 segundos e contando esta activo
   contando = 0; 
   digitalWrite(LED2, HIGH);
}

Não disseste como queres fazer reset aos LEDs logo deixo isso para ti.